学科分类
目录
C语言

断言与debug

断言一般用于程序调试中,在程序调试结束后需要取消断言,但如果在程序调试时使用了很多断言,一条一条的取消比较麻烦,C语言提供了#define NDEBUG宏定义禁用assesrt()断言。

在程序调试结束后,将#define NDEBUG宏定义语句插入到assert.h标准库之前,就可以禁用掉程序中所有的断言,示例代码如下所示:

#include <stdio.h>
#define NDEBUG     //取消断言
#include <assert.h>
//……

上一节定义的函数func()因为增加了断言,调用func(10,0)时,程序终止,如果在assert.h头文件之前添加#define NDEBUG语句,断言就会取消。使用0作为除数运行程序时,虽然程序会抛出异常并终止,但抛出异常与断言调用abort()函数终止程序并不一样,并且抛出异常也不显示程序出错的详细信息。

需要注意的是,#define NDEBUG语句必须放在assert.h头文件之前,如果放在assert.h文件后面,不能取消断言。

点击此处
隐藏目录