☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

在高级别的警告设置下编译

3.4.10 ID_warningDefault
目录 › next › previous

编译器一般允许设定编译警告的级别,级别越高关注的问题就越多,也可以将警告设为错误,当有警告产生时停止编译,建议代码在高级别的警告设置下编译。

应避免代码中出现 #pragma warning(default:...) 等指令,这种指令将警告级别设为默认,可能与整个项目的设置不一致,如果一定要使用,应改用 #pragma warning(pop) 方式。

示例:

#pragma warning(disable:4706)
#include "somecode"
#pragma warning(default:4706)  // Non-compliant

示例代码在导入某些代码之前将代号为 4706 的警告屏蔽,之后又将其设为默认级别,首先要关注 4706 是否应该被屏蔽,还要关注如果将其设为默认是否与整个项目的设置有冲突。

应改为:

#pragma warning(push)
#pragma warning(disable:4706)
#include "somecode"
#pragma warning(pop)  // Compliant

改用这种方式之后不必再关注是否与整个项目的设置有冲突了。

相关

ID_warningDisabled

参考

SEI CERT MSC00-C
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.