压制;额外费用'&引用;启用-pedantic时GCC中出错

压制;额外费用'&引用;启用-pedantic时GCC中出错,gcc,g++,compiler-errors,Gcc,G++,Compiler Errors,我正在用-pedantic标志构建我的程序,这会导致一个额外“;”错误(因为第三方标头不一致地使用了几个宏;当-pedantic关闭时,错误不会显示)。我真的不想关闭-pedantic,也不想编辑标题。有没有办法抑制这个错误?像-Wno恼人的分号错误编译器开关之类的?解决方法是删除-pedantic。在这种情况下,其他任何方法都不起作用。在传递包含路径时,使用-issystem而不是-I,那么GCC不会警告您系统头 对于您维护的任何标题,只需编辑它们。您可以抑制外部标题的迂腐警告,如下所示: /

我正在用
-pedantic
标志构建我的程序,这会导致一个
额外“;”错误(因为第三方标头不一致地使用了几个宏;当
-pedantic
关闭时,错误不会显示)。我真的不想关闭
-pedantic
,也不想编辑标题。有没有办法抑制这个错误?像
-Wno恼人的分号错误
编译器开关之类的?

解决方法是删除
-pedantic
。在这种情况下,其他任何方法都不起作用。

在传递包含路径时,使用
-issystem
而不是
-I
,那么GCC不会警告您系统头


对于您维护的任何标题,只需编辑它们。

您可以抑制外部标题的迂腐警告,如下所示:

//save compiler switches
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"

//Bad headers with problem goes here
#include <ros/ros.h>
#include <sensor_msgs/LaserScan.h>

//restore compiler switches
#pragma GCC diagnostic pop
//保存编译器开关
#pragma GCC诊断推送
#pragma GCC诊断已忽略“-Wpedantic”
//有问题的坏标题出现在这里
#包括
#包括
//还原编译器开关
#pragma-GCC-diagnostic-pop

为什么要使用迂腐的语言?看着它,似乎没有办法做你想做的事。当然,如果使用迂腐的语言仅仅是基于一种感觉,那么没有它你会更好;-)嗯,不仅仅是感觉:)有一些强烈的建议我必须遵循。我不认为第三方头是开源的?有没有可能修复它?它实际上是开源的,所以我想我会尝试联系作者。嗯,现在似乎没有快速的解决办法……:)@凯勒斯特兰实际上并不是“马车”,但也不是完全正确的。我不记得四年前哪个图书馆给我带来了这个麻烦,但是有一些宏观的魔法导致了这个问题。@Romandmineko我甚至在catch2上发现了这个问题,这个问题在新的标准下不断发展,太令人烦恼了,对我来说不起作用。在-isystem中包含了这个库,但是对于linux->apple交叉编译器仍然会抛出警告,但是对于g++和clang来说确实有效