在C中,主函数的调用约定是什么?

在C中,主函数的调用约定是什么?,c,x86,calling-convention,C,X86,Calling Convention,C中的每个函数都必须有一个调用约定,但是main函数的调用约定是什么(我认为是cdecl调用约定,但我不确定)?这取决于体系结构和平台。许多x86c运行时规范要求main必须是cdecl,但这并不能保证 底线是,您不会在C标准中找到这些信息,因为该语言与任何一种体系结构都没有关联。阅读您感兴趣的特定编译器的文档可能会更幸运。C语言没有定义调用约定,但处理器体系结构和开发平台有定义。 有关X86调用约定,请查看wiki 另外,请参见下面链接中的ARM调用约定 有关调用约定的更多信息,请参见下面的

C中的每个函数都必须有一个调用约定,但是
main
函数的调用约定是什么(我认为是
cdecl
调用约定,但我不确定)?

这取决于体系结构和平台。许多x86c运行时规范要求main必须是
cdecl
,但这并不能保证


底线是,您不会在C标准中找到这些信息,因为该语言与任何一种体系结构都没有关联。阅读您感兴趣的特定编译器的文档可能会更幸运。

C语言没有定义调用约定,但处理器体系结构和开发平台有定义。 有关X86调用约定,请查看wiki

另外,请参见下面链接中的ARM调用约定

有关调用约定的更多信息,请参见下面的wiki链接


另外,请查看

中关于MIPS调用约定的讨论,C语言没有定义任何调用约定。您可能希望在问题中添加一些更相关的标记和更多信息
main
与任何其他函数具有相同的调用约定<代码>\u start(ELF中的一个典型入口点)则是cdecl,必须处理转换为main的本机调用约定(以及其他事项)。。。不知道为什么
\u start
不使用本机调用约定。。。可能是因为在Linux中,binfmt_elf源代码位于./fs(文件系统)目录中,而不是./arch,32位x86使用cdecl,因此很容易变得懒惰,迫使每个非cdecl平台在其libc中需要一些特定于程序集或编译器的内部函数。