【问题标题】:GCC ignores calling convention attributeGCC 忽略调用约定属性
【发布时间】:2014-05-09 21:58:31
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    以下应该有效:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多