十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
函数的入口在main(),程序从上至下执行的,如果你的函数在main()之后定义并且没有声明,执行的时候编译器会找不到定义而编译不过。声明就是要让编译器知道函数原型 (检测错误)
山南网站建设公司创新互联,山南网站设计制作,有大型网站制作公司丰富经验。已为山南1000多家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的山南做网站的公司定做!
总之,如果main()函数在前,必须在main()中写函数声明;如果函数在main()前面,可以不在main()中写函数声明
你这个问题看似简单,其实涉及到了函数的声明与定义,以及C语言的标准规范和具体编译器的实现问题。
从标准规范来看:
C语言允许函数里声明函数,但是不建议这么写,因为不利于多文档的组织。
C语言禁止函数里定义函数,但是个别编译器却没遵循标准。
C语言的标准和编译器的实现并不是完全统一,为了可移植性,建议一切都按C语言标准中推荐的做法来写。
我还写了个代码附带注释,程序在CFree这个IDE(内置gcc编译器)上运行是通过的,但是在VC++6上就可能通不过了,主要是编译器具体实现不同。
#include stdio.h
//函数外
//声明,允许,推荐的做法
int add1(int a, int b);
int main(int argc, char *argv[])
{
//函数内
//声明,允许,但是不建议这么写
int add2(int a, int b);
//C语言标准里禁止函数内定义函数、
//但是有个别编译器也允许这样做,比如GCC
//此种写法不通用,强烈不建议使用
int add3(int a, int b)
{
return a+b;
}
//C99标准中,调用函数之前,必须保证声明已出现过
printf("%d\n", add1(1,2));
printf("%d\n", add2(2,3));
printf("%d\n", add3(3,4));
return 0;
}
//函数外
//定义,允许
int add1(int a, int b)
{
return a+b;
}
//定义,允许
int add2(int a, int b)
{
return a+b;
}
--您的采纳是我们的动力--
这个未声明只是警告,是一种提醒,有些时候不会影响编译,应该尽量可能避免。
以上代码把第11行的内容复制在第1行、第2行之间,末尾再加个分号(;),就可以了,这就是函数的声明。
很明显是函数声明嘛,书上这样写就是错了。
楼主有不懂可以问哦。