1

有谁知道为什么这不起作用?

void test() [[stdcall]] {
        std::cout << "Hello World" << std::endl;
}

当我尝试用 C++11 方言编译时,它说:

“警告:'stdcall' 属性指令被忽略 [-Wattributes]”

这是为什么?我有一个真正需要 stdcall 调用约定的函数。GCC 中的默认调用约定是 cdecl。有什么建议么?

4

1 回答 1

4

以下应该有效:

#include <iostream>
[[gnu::stdcall]]
void test()
{
  std::cout << "Hello World" << std::endl;
}

或者您可以使用旧语法__attribute__((stdcall))。与我一起编译g++ -std=c++11 -m32没有任何警告。

于 2014-05-10T00:21:52.603 回答