VS2019: 进一步新增了C++代码分析规则
2023-09-14 09:10:46 时间
官宣
在Visual Studio v16.8 Preview 3中,我们添加了一些新的安全编码规则到C++ Code Analysis中,开发者可以借助这些规则来发现一些比较常见的编码错误,这些错误看起来会不起眼,但是由此引发的Bug却十分难以追踪。这些编码规则都来自于真实运行的软件产品,在微软,每个项目都会执行这些编码规则检查,以确保软代码满足安全性和标准一致性的要求。
在之前的文章中,我们已经介绍了一些关于VARIANT的规则,包括VARIANT,VARIANTARG和PROPVARIANT等。
今天的文章将作为之前文章的一个延续,我们会介绍新的编码规则,主要是关于”枚举作为索引的用法”和”使用布尔值来作为HRESULT”这两种使用场景。
为了方便导入这些规则,我们创建了两个新的代码分析扩展,分别是EnumIndex和HResultCheck,它们可以用来检查上面提到的两个编码规则。
那么,我们开始吧。
使用枚举作为索引
枚举,可以看作是用户自定义的一个整数类型,它包含一个命名的整数常量集合。通常,我们也叫它为枚举常量。枚举主要使用在需要描述一段范围值的场景。
枚举的定义以一个enum关键字开始,后面可以接class或者struct关键字,如下所示:
enum class Suit { Diamonds, Hearts, Clubs, Spades };
我们也可以不加上class或者struct,这样的枚举称之为”Unscoped枚举”。
如果使用/std:c++17编译选项,则一个枚举可以使用一个显式的底层类型或者没有枚举器的形式来进行定义,由此可以引入一种新的,不能和其他类型进行隐式类型准换的整
相关文章
- c++实践--cocos2dx, 2048v1.0
- C++ 表达式语句 海伦的故事
- c++ 使用asmjit
- C++ 用枚举类型替代宏定义连续的常量
- C/C++基础讲解(三十四)之数值计算与趣味数学篇(扑克牌自动发牌与常胜将军)
- C语言/C++基础之雪绒花
- [转] c++ try catch 问题
- c++模板学习04之普通函数与模板函数调用规则
- atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
- C++设计模式:组合实体模式
- C++学习心得与c语言到c++衔接技巧
- 解答私信@被c++折磨头秃的花季美少女 //C++ 写一个带命令行参数的程序,可以实现将参数求和、求平均值以及排序之后输出(参数的数量不确定)。
- C++设计模式之组合模式的简单学习
- C++ Primer 学习笔记_88_用于大型程序的工具 --异常处理[续1]
- c++纯虚函数在父类中调用的规避
- Ubuntu20.04下,qt交叉编译报错::15: warning: identifier ‘nullptr‘ is a keyword in C++11 [-Wc++0x-compat]
- C 数据类型 和C++ 数据类型,及其取值范围
- C++ vector简单demo(二十一)
- C++语言笔记系列之十六——赋值兼容规则&多继承的二义性
- VC++判断目标文件是否被独占(附源码)
- atomic原子操作 c++
- C++逆向分析——this指针
- C++搭建集群聊天室(六):muduo网络库
- C++ 访问mysql