C中的每个函数都必须有一个调用约定,但main
函数的调用约定是什么(我认为它是cdecl
调用约定,但我不确定)?C中主函数的调用约定是什么?
2
A
回答
3
这取决于架构和平台。许多x86 C运行时间规范要求主要是cdecl
,但这并不是保证。
底线是你不会在C标准中找到这些信息,因为这种语言不与任何一种架构绑定。您可能有更多的运气阅读您感兴趣的特定编译器的文档。
2
C语言没有定义调用约定,但处理器体系结构和开发平台确实如此。 对于X86调用约定请维基 https://en.wikipedia.org/wiki/X86_calling_conventions
而且,看到ARM调用约定在下面的链接http://infocenter.arm.com/help/topic/com.arm.doc.ihi0042f/IHI0042F_aapcs.pdf
更多关于调用约定见下面的维基链接 https://en.wikipedia.org/wiki/Calling_convention
此外,检查有关MIPS调用约定讨论at GCC MIPS-32 Calling Conventions/Stack Frame Definition
相关问题
- 1. 导出函数(VS2008)的默认调用约定是什么?
- 2. __func函数的约定是什么?
- 3. C函数调用约定:为什么movl代替pushl?
- 4. 什么是自定义调用约定?
- 5. 什么是winapi函数声明约定?
- 6. C#中的命名约定是什么?
- 7. C#7中的本地函数的惯用命名约定是什么
- 8. 返回函数的函数的命名约定是什么?
- 9. Visual Studio中静态成员函数的默认调用约定是什么?
- 10. 函数调用约定
- 11. 这个C qsort函数调用中的参数是什么?
- 12. 自定义X86_64调用约定到C函数调用
- 13. c中的调用约定
- 14. C++函数约定?
- 15. PowerShell模块中正确的函数名称约定是什么?
- 16. 从主C中调用void *函数C
- 17. 什么是使用指针在C++中调用重载=运算符的约定?
- 18. 在C++中对函数调用预加“::”是做什么的?
- 19. 合并函数参数的适当命名约定是什么?
- 20. 函数参数变量的命名约定是什么?
- 21. Ruby函数调用括号化的主导风格是什么?
- 22. C++调用主函数
- 23. 为什么GCC是complaing约gets()函数
- 24. ODataConventionModelBuilder的约定是什么?
- 25. 什么是OpenSolaris系统调用调用约定(x86)?
- 26. 什么是返回布尔值的函数的命名约定?
- 27. 什么是由setTimeout调用的函数?
- 28. 这是什么样的函数调用?
- 29. 什么是回调函数?
- 30. 辅助函数的命名约定是什么?
C语言没有定义任何调用约定。您可能希望在您的问题中添加更多相关标签和更多信息 –
'main'与其他函数具有相同的调用约定; '_start'(ELF中的一个典型入口点),另一方面,_is_ cdecl并且必须处理转换为main(本身)的本地调用约定......不知道为什么'_start'不使用本地调用约定......可能是因为在Linux中,binfmt_elf源代码位于./fs(文件系统)目录中,而不是./arch和32位x86使用的cdecl,所以很容易懒惰, cdecl平台在其libc中需要一些汇编或编译器特定的内部函数。 – technosaurus