如何强制cdecl调用约定在特定头文件中声明的函数

Gri*_*rim 7 c c++ visual-c++

您好我的VC2008项目使用stdcall调用约定.我有一个我使用的外部库,它使用cdecl命名约定构建,但是他们没有在函数的函数声明中提到调用约定.

我想知道VC是否有某种#pragma或其他关键字会强制整个头文件的特定调用约定

有点像extern"C"技巧,但对于调用约定:

extern "C" 
{
#include <file1.h>
#include <file2.h> 
}
Run Code Online (Sandbox Code Playgroud)

谁知道这样的?

Dav*_*nan 5

您可以通过以下方式指定调用约定:

  • 什么都不做,你就会得到默认的 cdecl。
  • 明确指定__cdecl(或者可能通过宏)。
  • 通过使用 /Gd 进行编译,选择在整个翻译单元中使用 cdecl。

没有编译指示或任何类似的东西来控制调用约定。

  • 前两个是显而易见的,也是我试图避免的。天知道我需要改变多少函数定义。只是为了纠正你,默认值不是 cdecl,它是项目设置中设置的任何内容(在我的例子中设置为 stdcall)。 (2认同)