如何通过命令行禁用指定头文件的所有警告?(适配GCC 12+)
GCC 12+系统头文件内联函数警告问题及解决方案咨询
背景
此前,通过命令行使用-isystem而非-I将包含目录标记为系统目录后,GCC不会从这些头文件中发出任何警告。但自影响GCC 12+版本的某次提交起,若警告与内联函数相关,部分警告仍会被触发,例如-Wmaybe-uninitialized。
这种情况在实际开发中十分棘手:当你开发的代码A依赖于无法控制的外部项目B时,若用-Werror编译A,会因B的头文件产生的警告导致编译失败。
已知解决方案
- 完全禁用相关警告,例如使用
-Wno-maybe-uninitialized,但这会导致无法接收自身代码的此类警告; - 用
#pragma GCC diagnostic ignored "-Wall"包裹所有问题头文件的引用,但引用位置较多时扩展性不佳; - 修复B中的警告,这虽理想但大多时候无法实现。
问题
是否存在一种(新的)通过命令行禁用指定头文件所有警告的方法?
另见:GCC Bugzilla #119388
内容的提问来源于stack exchange,提问作者Raven
相关产品推荐
相关产品推荐

