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

Reply via email to