据我所知,如果main函数返回0,这表明总是成功的程序终止。即使另一个int值表示成功。
如果main返回非零值,则表示程序终止失败或另一个错误代码
如果
status
的值为零或EXIT_SUCCESS
,则状态成功终止的实现定义形式是返回。如果"status
"的值为"EXIT_FAILURE
状态不成功终止的实现定义形式返回。否则返回状态为实现定义)。
所以在C标准中只定义了成功(返回0),而不是如何解释非零int值,对吗?例如,如果在某个系统中,1代表"成功",那么返回0也会传递1吗?这是如何做到的呢?
main
函数是代码的入口点,而不是可执行文件的入口点。可执行文件包含一个操作系统定义的入口点,该入口点在调用main
之前运行一些启动代码。
main
从启动代码中调用,就像普通函数一样。启动代码接收main
的返回值,它可以执行任何必要的转换,以符合操作系统的要求。
启动代码是特定于每个操作系统的。操作系统对可执行文件的操作和环境有要求。C语言对C代码运行的环境有要求(特别是main
的参数和main
的返回值)。在这两组需求之间架起桥梁是启动代码的责任。
启动代码作为目标文件(通常称为"crt")交付。o",是"C runtime"的缩写。该文件由链接器包含在可执行文件中。您可以通过检查链接器命令行找到该文件的实际名称。启动文件通常是链接器命令行的第一个文件。