我不太明白[[maybe_unused]]函数本身何时有用。
通过阅读论文,它只说该属性可以应用于函数的声明。我的问题是,如果这意味着编译器将对未使用的函数发出警告,那么对于库的任何公共标头,所有内容都应该具有避免警告的属性,因为用户可能只使用库的一部分。
我的理解正确吗?
谢谢。
灵感来自这里:
namespace {
[[maybe_unused]] void foo() {}
void bar() {}
}
int main() {}
Run Code Online (Sandbox Code Playgroud)
在未命名命名空间中声明的函数只能在该翻译单元中使用,因此编译器可以在不使用这些函数时发出警告。事实上,gcc 会警告bar(error due to -Wall -Werror) 但由于[[maybe_unused]]not for foo:
<source>:5:10: error: 'void {anonymous}::bar()' defined but not used [-Werror=unused-function]
5 | void bar() {}
| ^~~
Run Code Online (Sandbox Code Playgroud)
上面链接的页面中的原始示例更具激励性,因为它使用条件编译,其中根据设置的某些符号来使用或不使用函数。
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |