繁体   English   中英

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

[英]gnu gcc How to suppress warning: ‘typedef’ was ignored in this declaration [enabled by default]

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

warning: ‘typedef’ was ignored in this declaration [enabled by default]

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

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

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

谢谢。

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

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

g++ -o test{,.cpp} -Wall -Wextra -Werror -I /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib

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

g++ -o test{,.cpp} -Wall -Wextra -Werror -isystem /usr/local/boost-1.55.0/include -L /usr/local/boost-1.55.0/lib

哪个(如果来自你在test.cpp中包含的Boost库的警告当然是你唯一的问题)。

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

warning (0, "%<typedef%> was ignored in this declaration"); 

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

由于-Wunused-local-typedef-Wall一部分,请确保在-Wno-unused-local-typedef之后没有-Wall 如果你这样做, -Wall只是重新打开选项。

在c ++ 17中,你应该使用maybe_unused,请参阅

http://en.cppreference.com/w/cpp/language/attributes

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0212r0.pdf

(抱歉,我无法发布示例,因为它被认为是stackoverflow严重缩进)

此GCC警告意味着您的typedef可能重复,您应该删除typedef关键字。 例如:

typedef enum class Something {
  THING1,
  THING2,
} Something;

上面的代码是类型重复,因为枚举类已经定义为类型。 所以你必须删除typedef关键字以及最后的东西!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM