其他分享
首页 > 其他分享> > c – [成员变量] [[maybe_unused]],GCC警告(错误?)该属性被忽略

c – [成员变量] [[maybe_unused]],GCC警告(错误?)该属性被忽略

作者:互联网

在以下example中:

struct Foo {
    [[maybe_unused]] int member = 1;
    void bar() {
        [[maybe_unused]] int local = 0;
    }
};

int main(int argc, char* argv[]) {
    Foo f{};
    f.bar();
    return 0;
}

海湾合作委员会发出警告,其中Clang和MSVC不:

warning: 'maybe_unused' attribute ignored [-Wattributes]
     [[maybe_unused]] int member = 1;

据我所知,这应该是合法的(编译器不会忽略).根据standard

10.6.7 Maybe unused attribute [dcl.attr.unused]

2. The attribute may be applied to the declaration of a class, a typedef-name, a variable, a non-static data member, a function, an enumeration, or an enumerator.

我讨厌绕过“编译器错误”锤子,但我不确定在这种情况下它还能是什么.

有没有人有任何见解?

解决方法:

任何属性都可以被编译器“忽略”,除非标准另有说明(例如在明确禁止的位置使用属性).

海湾合作委员会并不是说你不能把它放在那里;它说在那里放置一个将不会做任何事情,因为他们可能不会警告可能未使用的成员变量.

标签:compiler-bug,c,c17,compiler-warnings
来源: https://codeday.me/bug/20190910/1798542.html