C语言中不能在函数里面声明函数吗

2020-06-14 教育 73阅读

你这个问题看似简单,其实涉及到了函数的声明与定义,以及C语言的标准规范具体编译器的实现问题。


从标准规范来看:

  1. C语言允许函数里声明函数,但是不建议这么写,因为不利于多文档的组织。

  2. C语言禁止函数里定义函数,但是个别编译器却没遵循标准。

  3. C语言的标准编译器的实现并不是完全统一,为了可移植性,建议一切都按C语言标准中推荐的做法来写。


我还写了个代码附带注释,程序在CFree这个IDE(内置gcc编译器)上运行是通过的,但是在VC++6上就可能通不过了,主要是编译器具体实现不同。

#include 
//函数外 
//声明,允许,推荐的做法 
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;
}


-->您的采纳是我们的动力<--

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com