首先感谢各位热心帮助呵!!
这个问题我可能没有说清楚,main是入口这个我知道,但是大家应该也都知道,其实,程序在进入main之前是执行了很多东西的(调用各种初始化的函数,比如全局对象的构造函数等)。
其实,我是想知道:把一个函数调用写在main前面,为什么不可以?从编译、链接的机制,这个应该都没有问题,最多程序运行的时候,这个函数调用不在main函数里面,执行不到而已吧。
难道C/C++……
[/Quote]
程序执行时,在进入 main 函数之前当然需要做很多事情。这里问题的关键是,在函数外部执行一个函数调用,在 C 语言里面,是没有定义的。
楼主可能习惯以这样一种方式理解 C 语言:一个文件被打开,然后从上到下执行。在许多解释型语言里面,的确是这样的,但是在 C 语言里面不是。C 以函数为程序构成的基本单位,这不仅体现在语法上,也体现在最终生成的程序上。一个个函数堆砌成一个 C 程序,这些函数甚至不需要放在一个文件中编译。在链接的时候,这些函数被包装到一起组成一个程序,而这个包装通常也没有明显的顺序。也就是说,函数是相对独立,各自编译的。在这样一个编译模型里面,你在函数外部写一个函数调用语句,根本什么都不是,编译器也无法知道这个语句应当怎么处理,因为它无法属于任何一个函数。