c语言里面的函数分先后吗?

写了两个函数a,b(不是main)。函数a中要调用函数b,把b放在a的后面就无法编译了,反之能编译成功。难道程序中函数也分先后?
用的是VC++2008 Express Edition

函数要先声明后才能调用,声明分为两种如下:

先声明后定义:
void b();
void a()
{
b();
}

void b()
{
}

声明和定义在一个地方:
void b()
{
}
void a()
{
b(); //这样才能满足先声明后调用
}

你编译错误的原因应该是这样:
void a()
{
b(); //此时b还没有声明
}
void b()
{
};
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-20
调用函数前要先定义或声明函数
所以你如果在函数a前面声明函数b,那这样就可以了(两个函数就无所谓先后了)。
但是如果你不声明,却要在函数a中调用函数b,那么这就分先后了。
必须在函数a前先定义函数b,而不能是在函数a后定义。
第2个回答  2013-11-20
函数定义本身是可以不分先后的,但是C要求函数声明必须在调用前,是事实上所有的变量/函数/新类型都需要在使用前先声明(这个也很容易理解,使用某物前,至少也要让编译器知道用的是什么,对吧)
所以好的风格是,在文件一开始就把所有的函数原型都写明了,这样就不用再考虑函数定义的顺序了
第3个回答  2013-11-20

没有要求一定要分先后的!你加个函数声明就可以了啊!

下面给个例子:

#include <stdio.h>
void m();//函数声明
void f()//被调用函数放在调用函数之后可以不要声明
{
m();
printf("HELLO\n");
}
void main()
{
f();
}
void m()
{
printf("GOOD\n");
}

第4个回答  2013-11-20
可以先声明
相似回答