GCC忽略调用约定属性

时间:2014-05-09 21:58:31

标签: gcc c++11 g++ calling-convention stdcall

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

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

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

&#34;警告:&#39; stdcall&#39;属性指令被忽略[-Wattributes]&#34;

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

1 个答案:

答案 0 :(得分:3)

以下内容应该有效:

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

或者您可以使用旧语法__attribute__((stdcall))。使用g++ -std=c++11 -m32进行编译时,我没有收到任何警告。