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

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


忽然笑
浏览 815回答 4
4回答

斯蒂芬大帝

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

智慧大石

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

婷婷同学_

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

湖上湖

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