2014-05-09 53 views
1

有誰知道爲什麼這不起作用?GCC忽略調用約定屬性

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

當我嘗試用C++ 11的方言,它說編譯:

「警告: 'STDCALL' 屬性指令被忽略[-Wattributes]」

這是爲什麼?我有一個真正需要stdcall調用約定的函數。 GCC中的默認調用約定是cdecl。有什麼建議麼?

回答

3

下面應該工作:

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

,或者您可以使用舊的語法__attribute__((stdcall))。用g++ -std=c++11 -m32編譯我沒有任何警告。