On 6/11/21 3:37 PM, Markus Faehling wrote:
Hello,
I'm currently facing a problem where I cannot get both gcc and clang
warning-free simultaneously in my project. My code looks somewhat like
this:
class Test {
int a_;
void b() {};
};
This code gives me the(usually very useful) "-Wunused-private-field"
warning on clang. But because I have the unused member on purpose, I
would like to add the [[maybe_unused]] attribute to it:
class Test {
[[maybe_unused]] int a_;
void b() {};
};
While this version is warning-free in clang, gcc has a "-Wattributes"
warning because it ignores the [[maybe_unused]] warning. But I do not
want to disable either of these warnings because they are still very
useful in other situations.
Would it be possible to ignore the "-Wattributes" warning for
[[maybe_unused]] in places where other compilers might use the attribute?
Demonstration on godbolt.org: https://godbolt.org/z/8oT4Kr5eM
You can use #pragma to disable a warning for a particular section of code:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wattributes"
class Test {
[[maybe_unused]] int a_;
void b() {};
};
#pragma GCC diagnostic pop
But I also agree that GCC shouldn't warn here.
Jason