GCC игнорирует атрибут соглашения о вызовах

Кто-нибудь знает, почему это не работает?

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

когда я пытаюсь скомпилировать диалект C++11, он говорит:

msgstr "предупреждение: директива атрибута 'stdcall' игнорируется [-Wattributes]"

Это почему? У меня есть функция, которая действительно должна иметь соглашение о вызовах stdcall. Соглашение о вызовах по умолчанию в GCC - cdecl. Какие-либо предложения?

1 ответ

Решение

Следующее должно работать:

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

or you can use the old syntax __attribute__((stdcall)), Компилирование с g++ -std=c++11 -m32 I get no warning.

Другие вопросы по тегам