C attribute: maybe_unused (since C23) (original) (raw)

Suppresses warnings on unused entities.

[edit] Syntax

| | | | | ------------------------------------------------------------------------------- | | | | [[ maybe_unused ]] [[ __maybe_unused__ ]] | | | | | | |

[edit] Explanation

This attribute can appear in the declaration of the following entities:

If the compiler issues warnings on unused entities, that warning is suppressed for any entity declared maybe_unused.

[edit] Example

#include <assert.h>   [[maybe_unused]] void f([[maybe_unused]] _Bool cond1, [[maybe_unused]] _Bool cond2) { [[maybe_unused]] _Bool b = cond1 && cond2; assert(b); // in release mode, assert is compiled out, and b is unused // no warning because it is declared [[maybe_unused]] } // parameters cond1 and cond2 are not used, no warning   int main(void) { f(1, 1); }

[edit] See also