为gcc沉默Wunused-variable

时间:2016-02-21 02:24:09

标签: c++ gcc gcc-warning

这是我的代码:

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
//__attribute__((unused))
static int myVar = 5;
#pragma GCC diagnostic pop

当用-Wall编译时,我收到警告。但是,当我使用该属性时,我无法得到它。

为什么pragma的东西不起作用?我没有得到一个无法识别的标志的警告。其他stackoverflow线程指向我的pragma东西......

使用gcc (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 5.3.0

修改 我在gcc文档中读到了这个:

  

pragma GCC诊断类选项

     

修改诊断的处置。请注意,并非所有诊断都可以修改;目前只有警告(通常由'-W ......'控制)可以控制,而不是所有警告。使用-fdiagnostics-show-option确定哪些诊断是可控制的,哪个选项控制它们。

但是我仍然不明白如何知道是否可以用pragma来抑制警告 - 即使我从输出中得到[-Wunused-variable] ......

1 个答案:

答案 0 :(得分:3)

您遇到的问题似乎是,在处理完整个编译单元后,而不是在声明时,会发出有关未使用变量的警告。因此,在声明点处激活警告抑制功能根本不会发生任何事情,当您将其弹出时,警告在其实际重要的位置不会被忽略;也就是说,在文件结束之后。

删除pushpop指令会使警告被抑制。此外,将diagnostic ignored指令移动到文件末尾时,警告仍会被禁止。