为了账号安全,请及时绑定邮箱和手机立即绑定

请问在一个C语言程序中,为什么main函数可以出现在任何地方,不是开头就要申明么?

/ 猿问

请问在一个C语言程序中,为什么main函数可以出现在任何地方,不是开头就要申明么?

C
牧羊人nacy 2019-09-20 15:14:35

在一个C语言程序中,为什么main函数可以出现在任何地方,不是开头就要申明么


查看完整描述

5 回答

?
米脂

C语言不限定函数源代码在源文件中的位置,但是函数内的标识符同函数外的标识符一样也必须满足使用的标识符先声明后引用的原则。编译器对于每个编译单元(源文件)顺序扫描源代码,如果之前遇到过声明,那么会根据声明的内容假定它的定义在当前源文件中或者在另外的源文件或库文件中,这样不会出现错误。否则就会当作未定义的标识符而产生编译错误。所以main函数用到的标识符,无论是函数还是变量还是const限定的常量,都要在用到的地方之前声明(main本身不用声明),包括库函数。标准库头文件通常内容是一堆extern库函数声明(函数定义在另外的库文件中)和预处理命令,为了能够使函数的声明起到作用,必须#include在main函数之前,否则这些声明无效,等于没#include。(#include仅仅是文本包含指令,本身没有这个限制。)


查看完整回答
反对 回复 2019-09-22
?
海绵宝宝撒

因为main作为程序执行的入口只可能有一个,所以无论写在程序的什么位置上,在编译程序的过程中被识别出来即可,执行的时候就从main开始执行。
打个比方说,房子盖好之后,大门无论开在东面还是南面都可以,但只能有一个门,我们进入房间就从这个门进入即可。

查看完整回答
反对 回复 2019-09-22
?
万千封印

main函数位置可以任意、、但要注意一点、、变量要在使用之前定义、、函数再调用前记申明、、main函数里面的调用函数要么在mian里面申明、、要么在那些头文件紧接下来申明、、只要在mian之前就行、、

查看完整回答
反对 回复 2019-09-22
?
慕尼黑8549860

可以随意安排位置,不过需要遵循一条规则,在main()中调用的任何函数,其声明一定要出现在main()函数之前(特别注意,文件包含指令#include需要出现在main()之前)

查看完整回答
反对 回复 2019-09-22
?
呼如林

如果main中调用函数,那么这个函数必须在mani函数的前面。但是也可以在main函数的前面声明。因为代码是从main 函数开始,一条一条的顺序执行的。
例:
abc();
main()
{
abc();
}
abc()
{
//内部实现
}
这样就是在前面声明。
例2;
abc()
{
//内部实现
}
main()
{
abc();//直接调用,因为abc已经在前面定义并且了。
}


查看完整回答
反对 回复 2019-09-22

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信