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

时间:2017-08-15 16:50:15

标签: c x86 calling-convention

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

2 个答案:

答案 0 :(得分:3)

这取决于架构和平台。许多x86 C运行时规范要求main为cdecl,但它绝不保证。

最重要的是,您不会在C标准中找到此信息,因为该语言不依赖于任何一种体系结构。您可能会更幸运地阅读您感兴趣的特定编译器的文档。

答案 1 :(得分:2)

C语言没有定义调用约定,但是处理器架构和开发平台没有。 对于X86调用约定,请检查wiki https://en.wikipedia.org/wiki/X86_calling_conventions

另请参阅下面的链接http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf

中的ARM调用约定

更多关于调用约定的信息,请参阅下面的wiki链接 https://en.wikipedia.org/wiki/Calling_convention

另外,请在GCC MIPS-32 Calling Conventions / Stack Frame Definition

检查有关MIPS调用约定的讨论