C90 标准新增了函数原型,旧式的编译器可能无法识别(稍后我们将介绍,如果使用这种编译器应该怎么做)。函数原型是一种声明形式,告知编译器正在使用某函数,因此函数原型也被称为函数声明(function declaration)。函数原型还指明了函数的属性。
创新互联建站凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都做网站、网站建设、网站优化、软件开发、网站改版等服务,在成都十年的网站建设设计经验,为成都1000多家中小型企业策划设计了网站。
早期的C语言支持一种更简单的函数声明,只需指定返回类型,不用描述参数:
void butler();
早期的C代码中的函数声明就类似上面这样,不是现在的函数原型。C90、C99 和C11 标准都承认旧版本形式,但是也表明了会逐渐淘汰这种过时的写法。如果要使用以前写的 C代码,就需要把旧式声明转换成函数原型。本书在后面的章节会继续介绍函数原型的相关内容。
参考文献:C primer plus 第六版中文版
函数定义就是规定函数的格式与功能。
函数声明就是在函数调用之前进行的一种说明。
下面举例说明两者的语法格式:
#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);)之后)。
原型声明——告诉编译器有这么一个原型(编译器在扫描到它时会作一个记录)。
在引用到这么一个原型时,编译器会检查记录中有无此原型,如果无此原型,编译器就不知道这是个什么玩意儿,并报错——error:undefined:"***",也就是未定义的意思。
注意,你声明的原型也是有作用域的——在一个函数中声明的原型(我把它叫局部的原型声明),不可以在另一个函数中使用,只能在本函数内使用。