[[maybe_unused]] 属性不起作用

Sum*_*udu 10 c++ gcc cmake c++17

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

int main([[maybe_unused]] int argc, char** argv)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

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

warning: ‘maybe_unused’ attribute directive ignored [-Wattributes]
Run Code Online (Sandbox Code Playgroud)

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

-std=c++17 -Wall -pedantic -Wextra -Weffc++
Run Code Online (Sandbox Code Playgroud)

我记得以前成功使用过这个属性,但我不知道为什么现在不起作用。有人可以展示我在这里做错了什么吗?

And*_*sev 1

您可以通过以下方式抑制有关未使用变量的警告:

int main(int /* argc */, char** argv)
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

或使用以下技巧:

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

    //...
}
Run Code Online (Sandbox Code Playgroud)

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