原型声明——告诉编译器有这么一个原型(编译器在扫描到它时会作一个记录)。
创新互联建站是一家专业提供策勒企业网站建设,专注与网站制作、网站建设、H5技术、小程序制作等业务。10年已为策勒众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
在引用到这么一个原型时,编译器会检查记录中有无此原型,如果无此原型,编译器就不知道这是个什么玩意儿,并报错——error:undefined:"***",也就是未定义的意思。
注意,你声明的原型也是有作用域的——在一个函数中声明的原型(我把它叫局部的原型声明),不可以在另一个函数中使用,只能在本函数内使用。
最好先加上原型声明,然后再定义,或者是使用该函数。
原型声明并不是可有可无的,很多时候它关系到代码的生成,函数定义会根据原型声明进行参数类型检查,决定参数压栈方式,使用函数的地方会根据原型声明来确定如何提取栈中的参数。
如果你省略原型声明,编译器就会根据一些规则,自己来猜,猜错了你就倒霉了。尤其是在传统C与标准C混用的时候,会让你得到错误的结论,而你怎么检查源程序都查不出原因来。
你是新手,以上这些话你可能不完全明白,按照C语言的标准,你最好是把原型声明写上,它并不是个可有可无的东西。先写原型声明,再写函数定义或调用,这是一个好习惯。
函数定义就是规定函数的格式与功能。
函数声明就是在函数调用之前进行的一种说明。
下面举例说明两者的语法格式:
#includestdio.h
int fun(int a, int b); // 函数的声明
void main()
{
int x=1, y=2;
int c;
c = fun(x+y);
}
// 下面的fun函数就是函数的定义
int fun(int a, int b)
{
return a+b;
}
注:如果被调函数(上例中为fun函数)写在调用处之前,可以不声明(本例是现在调用处 (c = fun(x+y);)之后)。