Namespaces
Variants

C attribute: maybe_unused (since C23)

From cppreference.net

사용되지 않는 엔터티에 대한 경고를 억제합니다.

목차

구문

[[ maybe_unused ]]
[[ __maybe_unused__ ]]

설명

이 속성은 다음 엔터티의 선언에 나타날 수 있습니다:

  • 구조체 / 공용체 : struct [ [ maybe_unused ] ] S ; ,
  • typedef 이름 : [ [ maybe_unused ] ] typedef S * PS ; ,
  • 객체: [ [ maybe_unused ] ] int x ; ,
  • 구조체/공용체 멤버: union U { [ [ maybe_unused ] ] int n ; } ; ,
  • 함수 : [ [ maybe_unused ] ] void f ( void ) ; ,
  • 열거형 : enum [ [ maybe_unused ] ] E { } ; ,
  • 열거자: enum { A [ [ maybe_unused ] ] , B [ [ maybe_unused ] ] = 42 } ; .

컴파일러가 사용되지 않는 개체에 대해 경고를 발생시키는 경우, maybe_unused 로 선언된 모든 개체에 대해서는 해당 경고가 억제됩니다.

예제

#include <assert.h>
[[maybe_unused]] void f([[maybe_unused]] _Bool cond1, [[maybe_unused]] _Bool cond2)
{
   [[maybe_unused]] _Bool b = cond1 && cond2;
   assert(b); // 릴리스 모드에서 assert는 컴파일되지 않고 b는 사용되지 않음
              // [[maybe_unused]]로 선언되었으므로 경고가 발생하지 않음
} // 매개변수 cond1과 cond2가 사용되지 않지만 경고 없음
int main(void)
{
    f(1, 1);
}

참고 항목

C++ 문서 에 대한 maybe_unused