从main函数说起

本文详细探讨了C/C++程序的main函数,包括其作为程序起点的角色、调用过程、参数传递和返回。文章指出,main函数首先是一个普通函数,但并非程序真正入口,真正的入口是操作系统调用的`invoke_main(void)`。main函数的参数包括命令行参数,返回值通常是程序执行状态的指示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、没有任何代码的源文件

当创建一个空白的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()
{
   
   
		
}

修改后确实编译通过,生成了可执行文件test.exe。像上面提

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值