1.assert的使用形式
#include <assert.h>
assert (表达式);
(1)在c语言中,宏,是一种预处理指令。assert(表示式) 就是一个宏
(2)表达式必须是一个能计算出真或假的布尔条件,它通常意味着 该表达式是一个能够返回整数值的表达式(0表示假,非0表示真),当然也可以判断指针是否为空或为野指针
(3) 使用时需要包含头文件<assert.h>
2.assert的作用
在开发和测试阶段, assert 常被用于快速发现和定位程序中的错误
当表达式为假时,它将执行以下操作:
- 打印一条错误信息,通常包括失败的表达式、文件名和行号。
- 调用
abort
函数终止程序执行。
3.assert的禁用与再次启用
3.1当我们不想使用使用assert断言时
3.1.1.我们可以直接删除这行代码
3.1.2.通过定义NDEBUG宏
在头文件之前定义该 NDEBUG 宏。这样,编译器在预处理时就会忽略所有的 assert语句
#define NDEBUG
#include <assert.h>
int main ()
{
...;
assert(表达式);
return 0;
}
3.2再次启用assert
3.2.1删除NDEBUG宏
3.2.2使用#undef等预处理指令
...
//初始禁用
#define ENDBUG
#include <assert.h>
int main ()
{
...;
//被禁用
assert(表达式1);
...;
#undef NDEBUG
//可使用
assert(表达式2)
return 0;
}