作为C的初学者,我可以理解文件中对函数原型的需求,但我不确定几件事情.
首先,在main之外的每个函数调用是否需要原型声明?有什么条件可以改变吗?
其次,您是否需要单独的函数原型来进行方法重载?
解决方法
C中的函数调用不需要原型可见,但强烈建议在原型范围内使用正确的原型.
这样做的原因是,如果在执行默认函数参数提升后函数定义与函数参数的类型不匹配,则很可能会得到未定义的行为.
正确的原型可见意味着编译器可以检查函数调用的参数,并警告程序员是否存在不匹配.
C不允许函数重载,因此您只能为任何函数名称使用单个原型.
默认参数促销可能会导致意外不匹配.
例如.
int main(int argc,char **argv)
{
short s = 5;
float f = 2.3f;
x(s,f); // x implicitly declared; default argument promotions performed
return 0;
}
int x(short t,float g) // Error: called with an int and a double
{
return (int)(t + g);
}
在函数调用中,因为x没有可见原型(尚未),s将被提升为int,f将被提升为double.这些是默认参数促销.然后,当使用带有short和float的原型定义函数时,这会导致不匹配,即使这些是传入的参数的原始类型.
采用可变数量参数的函数(即use,…语法)必须始终在调用它们的位置具有可见原型.