移植到较新的 RHEL 版本时,是否可以使用编译器标志抑制从 'const char*' 到 'char* 的无效转换错误?

Is it possible to suppress invalid conversion from 'const char*' to 'char* errors with a compiler flag when porting over to newer RHEL versions?

我在较新的 RHEL 主机上编译一些代码时遇到从 'const char*' 到 'char* 的无效转换。

我遇到的错误来自我包含的外部库,理想情况下我不想更改它并且我知道理想情况下正确的解决方案是修复 .h 文件中的错误引发此错误的外部项目。

但是,我想知道是否有一个编译器标志可以传入以忽略此错误或将其转换为警告一段时间,直到此错误被库的所有者修复?

谢谢

您可以考虑使用 -isystem /path/to/your/libs/headers 来禁止来自给定目录中所有包含文件的所有警告(除非您随后使用 -Wsystem-headers 来显示它们)。 然后你会使用 :

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-fpermissive"
#include <yourlibrary>
#pragma GCC diagnostic pop

将该错误转化为警告,但这有点 hack,可能会隐藏或引入错误。

干净的解决方案当然是实际修复警告,但这似乎不可能。