C 属性: maybe_unused (C23 起)
来自cppreference.com
抑制对未使用实体的警告。
语法
[[ 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);
}
参阅
maybe_unused 的 C++ 文档
|