问题
#include <stdio.h>
float d();
int main(void)
{
d(1,2);
return 0;
}
float d(int a)
{
}
能通过编译!!!
总结
函数三要素
1、函数名称
2、返回值类型
3、参数列表
函数调用前必须声明或定义,一般是函数声明,函数声明的作用就是根据函数名校验函数三要素是否一致。准确的说,校验函数调用和函数定义中,返回值类型和参数类型及个数是否一致。
C语言,允许函数声明不写明参数,如上d函数。在这种情况下,编译阶段,将不会对函数调用和函数定义的参数表进行校验。也就是说,在函数调用和函数定义中的参数表,可以随便写,也能通过编译。在这种情况下通过编译,是很危险的。
解决这个问题最好办法是:函数声明一定要明确参数列表,如果不需要参数,注明void。