如何在GCC中临时禁用指定-Wswitch警告且不影响其他警告
GCC 局部禁用指定编译警告方案
你可以通过GCC提供的诊断指令实现局部代码段的警告禁用,仅作用于目标switch代码,不会影响其他位置的警告检查,使用方式如下:
代码实现示例
// 保存当前编译诊断配置 #pragma GCC diagnostic push // 临时关闭未处理枚举值的switch警告 #pragma GCC diagnostic ignored "-Wswitch" while (etatsImprimanteCasImpressionPeriodique != EtatIPSortie) { switch (etatsImprimanteCasChangementCartouche) { // 原有逻辑,不需要添加EtatCCSortie分支 .... } } // 恢复之前保存的诊断配置,后续代码的-Wswitch警告重新生效 #pragma GCC diagnostic pop
说明
- 该语法同时兼容C、C++代码,以及Clang编译器
- 必须成对使用
diagnostic push和diagnostic pop,避免意外修改全局警告配置 - 仅支持GCC 4.6及以上版本,目前主流发行版的GCC版本都满足要求
内容的提问来源于stack exchange,提问作者SabrineGuiga
相关产品推荐
相关产品推荐

