默认情况下,c ++成员函数是用cdecl + fastcall约定编译的吗?

时间:2016-09-27 04:35:25

标签: c++ function member conventions

这两个约定在x86编译模式下一起使用?

对于64位编译,没有cdecl + fastcall对吗?只是AMD 64 ABI呼叫约定?如果是这样,如何在64位模式下推迟stdcall和cdecl?

1 个答案:

答案 0 :(得分:4)

  

这两个约定在x86编译模式下一起使用?

没有。你从哪里得到这个想法?每个调用约定都是不同的,任何给定的函数一次只能使用一个调用约定。不仅如此,fastcall还没有标准化。如果有的话,不同的32位编译器以不同的方式实现它,因此它不能用于可移植代码。 32位中唯一标准的便携式呼叫约定是cdeclstdcall

  

对于64位编译,没有cdecl + fastcall对吗?只是AMD 64 ABI呼叫约定?

是。 64位中只有一种通用调用约定。代码中明确使用的32位调用约定将被忽略。

  

如果是这样,如何在64位模式下推迟stdcall和cdecl?

你不是。因为它们不存在于al。