C++ 属性: maybe_unused (C++17 起)

来自cppreference.com
< cpp‎ | language‎ | attributes

压制不使用实体时的警告。

[编辑] 语法

[[maybe_unused]]

[编辑] 解释

此属性能出现在下列实体的声明中:

  • class/struct/unionstruct [[maybe_unused]] S;
  • typedef ,包括别名声明所声明者: [[maybe_unused]] typedef S* PS;, using PS [[maybe_unused]] = S*;,
  • 变量,包括静态数据成员[[maybe_unused]] int x;
  • 非静态数据成员union U { [[maybe_unused]] int n; };
  • 函数[[maybe_unused]] void f();
  • 枚举enum [[maybe_unused]] E {};
  • 枚举项: enum { A [[maybe_unused]], B [[maybe_unused]] = 42 };

若编译器在不使用实体时发布警告,则对于任何声明为 maybe_unused 的实体压制该警告。

[编辑] 示例

[[maybe_unused]] void f([[maybe_unused]] bool thing1,
                        [[maybe_unused]] bool thing2)
{
   [[maybe_unused]] bool b = thing1 && thing2;
   assert(b); // 发行模式中, assert 被编译掉,而不使用 b
              // 无警告,因为它被声明为 [[maybe_unused]]
} // 不使用参数 thing1 与 thing2 ,无警告