# C++ 属性： maybe_unused (C++17 起)

< cpp‎ | language‎ | attributes

抑制针对未使用实体的警告。

### 语法

`[[maybe_unused]]` |  |

### 解释

此属性可出现在下列实体的声明中：

- class/struct/union：struct [[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` 的实体抑制该警告。

### 示例

    #include <cassert>

    [[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，无警告

    int main() {}

### 参阅