[[maybe_unused]] 对于一个函数

Hom*_*ave 1 c++

我不太明白[[maybe_unused]]函数本身何时有用。

通过阅读论文,它只说该属性可以应用于函数的声明。我的问题是,如果这意味着编译器将对未使用的函数发出警告,那么对于库的任何公共标头,所有内容都应该具有避免警告的属性,因为用户可能只使用库的一部分。

我的理解正确吗?

谢谢。

for*_*818 7

灵感来自这里

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)

居住

上面链接的页面中的原始示例更具激励性,因为它使用条件编译,其中根据设置的某些符号来使用或不使用函数。