一、没有任何代码的源文件
当创建一个空白的C/C++源文件时能否编译、运行?如果你有C/C++或其他类似的语言基础,肯定会果断地回答:“当然不能,至少需要一个main函数,它是程序的入口”。
创建一个main.c源文件,里面不写任何代码:
main.c
在vs下尝试编译,会报编译时错误(不会生成.exe可执行文件):
无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用
暂时先不管出错的原因,显然不包含任何源文件的代码是不能被编译成可执行文件的,至少在C/C++中是这样。然而在Python语言中,即使一个不含任何代码的.py源文件也可以被解释执行(虽然它什么也没做)。
有时候我这样想:我要执行自己的C/C++代码,如果在源文件中不写任何代码,是不是向Python那样虽然什么也不做但至少能执行起来呢(哪怕是显示一个控制台窗口一闪而过),显然在C/C++中是不行的。
在Python的源文件中还曾这样写,如:
test.py
x = 10
很轻松地可以按照意愿定义一个变量,不必附加其他代码,真正的“随心所欲”。同样的我们在C/C++中直接这样写:
main.c
int x = 10;
同样会报编译时错误,而且和之前不含任何代码时的错误相同:
无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用
显然在C/C++中直接写逻辑代码同样不会编译通过。
二、main函数首先是一个普通的C/C++函数
C/C++的标准指出,每个C/C++程序都要包含一个main函数作为程序的开始,并给出两种定义形式:
int main(void) {
body }
int main(int argc, char *argv[]) {
body }
在不涉及参数时,我们通常将main函数定义为:
int main() {
body }
将main.c源文件修改:
main.c
int main(