我在多个地方看到,Microsoft对于x64平台的调用约定被缩小到了一个:调用者清理堆栈(cdecl),参数通过堆栈和寄存器的组合传递(我这里不会详细解释)。我假设如果这是操作系统的调用约定,则可能所有针对Windows的其他编译器(例如mingw-w64)也遵循它。
这种调用约定是否也适用于其他主要平台(例如x64 Linux等)?或者Linux仍然使用多个调用约定,甚至只有一个但不同的调用约定?GCC或Clang是否允许在x64 Linux上使用多个调用约定?
这种调用约定是否也适用于其他主要平台(例如x64 Linux等)?或者Linux仍然使用多个调用约定,甚至只有一个但不同的调用约定?GCC或Clang是否允许在x64 Linux上使用多个调用约定?