在 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/