C attribute: maybe_unused (since C23)
From cppreference.net
<
c
|
language
|
attributes
抑制未使用实体的警告。
目录 |
语法
[[
maybe_unused
]]
[[
__maybe_unused__
]]
|
|||||||||
说明
此属性可出现在以下实体的声明中:
- 结构体 / 联合体 : struct [ [ maybe_unused ] ] S ; ,
- 类型定义名 : [ [ 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
|