[[maybe_unused]] 属性不起作用

[[maybe_unused]] attribute not working

本文关键字:不起作用 属性 unused maybe      更新时间:2023-10-16

我试图使用新的 c++17 属性[[maybe_unused]]忽略unused parameter警告,如下所示。

int main([[maybe_unused]] int argc, char** argv)
{
//...
}

但我仍然warning: unused parameter ‘argc’ [-Wunused-parameter]收到以下附加警告。

warning: ‘maybe_unused’ attribute directive ignored [-Wattributes]

我正在使用g++ (GCC) 7.2.0cmake-3.11.3.我的编译器标志如下。

-std=c++17 -Wall -pedantic -Wextra -Weffc++

我记得以前成功地使用了此属性,但我不知道为什么现在它不起作用。有人可以证明我在这里做错了什么吗?

您可以通过以下方式禁止显示有关未使用变量的警告:

int main(int /* argc */, char** argv)
{
//...
}

或使用以下技巧:

int main(int argc, char** argv)
{
(void)argc;
//...
}

在这种情况下,此代码将适用于C++标准的早期版本,甚至适用于纯 C。