对编译警告的屏蔽应慎重
3.4.9 ID_warningDisabled
编译器一般允许使用预编译指令屏蔽某些编译警告,但对于反映风险或安全问题的警告不应屏蔽。
示例:
#ifdef _MSC_VER
#pragma warning(disable: 4172) // Non-compliant
#elif defined __GNUC__
#pragma GCC diagnostic ignored "-Wreturn-local-addr" // Non-compliant
#endif
示例代码屏蔽了 Visual Studio C4172 和 GCC -Wreturn-local-addr 对应的警告,当局部变量的地址被返回时编译器不会给出警告,但这种警告是不应该被屏蔽的,详见 ID_localAddressFlowOut。
本规则集合提到的部分问题编译器也可以给出警告,这种警告均不应被屏蔽。