[英]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.