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