gnu gcc如何禁止警告:在此声明中忽略'typedef'[默认启用]

260*_*607 2 c++ gcc warnings gnu

我在Fedora 16上使用GNU gcc 4.6.2.我正在使用第三方API编写应用程序,在编译之后,我收到了很多警告.

warning: ‘typedef’ was ignored in this declaration [enabled by default]
Run Code Online (Sandbox Code Playgroud)

只是想知道如何压制这个?我用-Wall标志编译我的程序.

在本文档http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html中,它提到了类似-Wunused-local-typedefs的内容.

我尝试过-Wno-unused-local-typedef,但不起作用.

谢谢.

And*_*sky 8

-Wno-unused-local-typedefs对我来说在gcc 4.8中有效.

  • 可能我们处于交叉目的......我看到的是:提问者正在询问如何禁用警告.并且"-Wno-unused-local-typedef"对他不起作用.然而你只用一行回答:"-Wno-unused-local-typedefs在gcc 4.8中适用于我".我现在想知道你想要暗示什么(我不想冒犯你,只是想澄清一下);)如果你用更多的单词回答而不仅仅是单行,那就更清楚了. ..我现在多次重读问题和答案,仍然没有收到您尝试提供答案的信息?RGDS (3认同)

bpw*_*621 7

gcc允许您指定某些库包含路径应​​被视为具有开关的系统库,该-isystem开关允许这些标头对您在其余代码上使用的标志进行特殊处理.因此,例如,如果你有未使用的本地typedef使用某些Boost库test.cpp(我signals2最近使用包含Boost 库的方法)

g++ -o test{,.cpp} -Wall -Wextra -Werror -I /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib
Run Code Online (Sandbox Code Playgroud)

以上不构建干净的尝试以下

g++ -o test{,.cpp} -Wall -Wextra -Werror -isystem /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib
Run Code Online (Sandbox Code Playgroud)

将提供(包括你所包含的Boost图书馆的警告test.cpp当然是你唯一的问题).


x53*_*539 6

根据gcc-source-code(gcc/cp/decl.c:4108):

warning (0, "%<typedef%> was ignored in this declaration"); 
Run Code Online (Sandbox Code Playgroud)

在gcc 4.6.2中没有命令行标志(也就是0代表的那个)来抑制这个警告.