C语言中main函数是否必须命名为main?能否使用其他名称?
C语言中main函数的命名规则
1. 标准C中必须命名为main
在标准C规范(如C11、C17)里,依赖操作系统运行的宿主环境程序,其入口函数必须是main。编译器和链接器会默认寻找这个名称作为程序的起始执行点,如果你改用其他名称(比如my_main),链接阶段会直接报错,提示找不到入口符号。
2. 非标准场景下的例外
- 嵌入式、裸机等独立环境(不依赖操作系统):这类系统的入口由硬件启动逻辑或厂商提供的启动代码决定,可能不需要
main,比如有些嵌入式平台的入口是_start或自定义函数,但这属于实现定义的行为,不属于标准C的范畴。 - 编译器非标准扩展:部分编译器支持通过编译选项指定自定义入口,比如GCC的
-e参数可以指定入口符号,但这是编译器专属特性,完全不具备移植性,不推荐在标准程序中使用。
3. main的特殊含义
main不是任意命名的标识符,它是语言标准规定的程序入口标记:
- 操作系统会调用
main函数来启动程序的执行逻辑; - 它的返回值(通常为
int类型)会传递给操作系统,用来标识程序的执行状态(比如返回0表示执行成功,非0值表示出现错误); - 标准明确了两种合法的函数签名:
int main(void)和int main(int argc, char *argv[])(或等价的char **argv),其他签名属于实现定义,但名称必须是main。
内容的提问来源于stack exchange,提问作者Yusuf
相关产品推荐
相关产品推荐

