默认情况下,C++成员函数是否使用cdecl + fastcall约定编译?

问题描述:

这两个约定在x86编译模式下一起使用?默认情况下,C++成员函数是否使用cdecl + fastcall约定编译?

而对于64位编译,没有cdecl + fastcall的权利?只是AMD 64 ABI调用约定?如果是这样,如何在64位模式下推迟stdcall和cdecl之间的关系?

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

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

而对于64位编译,没有cdecl + fastcall的权利?只是AMD 64 ABI调用约定?

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

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

你不知道。因为它们不存在于al。