c++ - MS Visual C++ : When should you care about using calling conventions?

标签 c++ c calling-convention

在 C/C++ 中(具体来说,我使用的是 MSVS),在什么情况下需要担心为函数定义指定调用约定?它们曾经重要吗? complied 是否能够在必要时选择最佳约定(即 fastcall 等)。

也许我的理解还不够,但我只是看不出什么时候程序员需要关心参数在堆栈上的放置顺序等问题。我也不明白为什么编译器的优化无法选择最适合该特定功能的方案。任何人都可以提供给我的任何知识都会很棒。谢谢!

最佳答案

一般而言,当您集成由不同 编译器编译的代码时,调用约定很重要。例如,如果您要发布一个将由您的客户使用的 DLL,您将希望确保您导出的所有函数都具有一致的、预期的调用约定。

您是正确的,在单个程序中,编译器通常可以为每个函数选择使用哪种调用约定(并且规则通常非常简单)。

关于c++ - MS Visual C++ : When should you care about using calling conventions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4785909/

相关文章:

c - 在 C 中使用递归缩进行

c++ - 使用 PInvoke 时,为什么要使用 __stdcall?

assembly - 无堆栈函数的跳转/跳转编译策略。 (手动使用链接注册而不是调用/返回)

assembly - 编程语言可以有自己的调用约定吗?

c++ - void() 和 void{} 有什么区别?

c++ - 关于虚拟继承层次结构的问题

c - cmd命令 'dir'用的是什么设备?

c++ - 命名空间中的无效数据类型转换

C++ Integer 从 *char[] 中删除字符串

c++ - 源代码中的 Kdbg pid() 调用