C 是否允许函数以不足的参数来调用自己
Does C++ allow function to call itself with insufficient parameters?
我知道这个问题听起来很荒谬,但是我需要这里的专家确认,所以请让我解释一下情况:
我正在调试C 代码(很长,〜5000行),我发现了一些奇怪的东西,我试图简化如下:
myClass.h
class myclass
{
...
void myfun(int p1, int p2, mytype *p3, bool isFirstTime);
...
}
=================================================================
myClass.cpp
...
void myclass::myfun(int p1, int p2, mytype *p3, bool isFirstTime)
{
...
if (mycond[y] == false)
{
myarr[y] = p1;
myfun(y, y, p3); <--- here no bool parameter given (*)
}
...
}
...
可以编译和运行代码,而不会出现任何错误或警告(用于函数myfun
)。但是,由于代码中有很多if-else
,因此我不确定在此过程中是否真的调用了(*)
的命令。
所以问题是:此行使用是否正确?如果正确,请向我解释或给我一些有关此"类型"功能的信息。如果不正确,为什么编译时没有警告或错误?
如果该函数没有默认参数,例如
void f(int x, int y, int z = 0) // we can call inside f(1,2) since z is a default parameter
然后否,它不能以更少的参数自称。但是,它可以调用具有更少参数的超载版本:
void f(int x, int y); // one version
void f(int x, int y, int z); // another overload, this can call the first overload f(1,2)
因此,请检查您的代码是否默认参数或过载版本。另外,默认参数应在标题文件中,实现文件不必再次指定它们。
是的,如果myfun被超载,则可能。因此,功能
myclass::myfun(int p1, int p2, mytype *p3);
需要存在,但是从您发布的片段中不可能知道这一点。
相关文章:
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何访问模板参数自己的模板参数?
- 在类自己的成员函数中构造类时,如何强制类模板参数推导?
- 如何使用自己的参数扩展 PointNormal 类?
- 在函数调用时C++多组参数及其自己的括号?
- 当超出列时,clang格式强制每个参数/参数拥有自己的行?
- GCC 或 Clang 关于函数参数在其自己的默认参数中的范围内的名称是否正确?
- C 超载相等运算符.我应该写自己的功能以接受通过参考或值传递的参数
- LIBSVM SVM 在如何使用我自己(不带"svmpredict")与从"svmtrain"返回的参数
- count_if使用我自己的类实现第三个参数
- 我想根据自己的参数使用count_if
- 知道自己的模板参数模板的模板
- C 是否允许函数以不足的参数来调用自己
- 朋友拥有自己的类模板和其他模板参数
- 如果函数类型仅依赖于其自己的模板参数,则取决于函数类型
- C++ 集<>类对象。使用自己的比较器给出错误:C2804:二进制'operator <'参数过多
- 用C++中的参数在构造函数中定义自己类的数组
- 在自己的默认值中使用参数的名称 - 合法吗?
- 我发现自己无法理解MPI_Gatherv的参数"recvcounts"
- C++:将自己结构的地址作为参数传递给pthread_create时出错:What覆盖了我的数据