assert:
首先要包含头文件<assert.h>
头文件定义的宏assert(),用于在运行时确保程序符合指定条件,如果不符合,就会报错终止运行。这个宏被称为“断言”。
例如下面的两行代码所示,一旦程序不符合条件,编译器就会报错,并且给出错误信息。当然 ,如果符合条件,assert对程序没有任何影响,程序继续执行。
assert()接受一个表达式作为参数,并不是只能断言指针,例如
assert的好处:
1、出现错误的时候,直接会报错,指明在什么文件,哪一行
2、我们确定程序无错误,不需要assert的时候,我们无需改动代码,直接在头文件前定义#define NDEBUG
而在我演示代码的vs中,Release版本是直接优化掉assert,此时不需要添加#define NDEBUG,这样的好处就是有利于程序员在debug中使用assert排查问题,提高效率 。
在我们写代码时,如果担心下面会出现错误,我们不妨使用assert对条件进行断言,这样可以很方便的预防代码错误,也有利于我们修正代码,并且在程序无错误时也不影响代码的运行。