3.9.3 C语言assert()宏

在标准头文件<cassert>中,会发现assert()是一个方便的调试宏。当使用assert()时,给它一个参数,即一个表示断言为真的表达式。预处理器产生测试该断言的代码。如果断言不为真,则在发出一个错误信息告诉断言是什么以及它失败之后,程序会终止。下面是一个例子:

3.9.3 C语言assert()宏 - 图1

3.9.3 C语言assert()宏 - 图2

这个宏来源于标准C,所以在头文件assert.h中也可以使用。

当完成调试后,通过在程序的#include<cassert>之前插入语句行

3.9.3 C语言assert()宏 - 图3

或者在编译器命令行中定义ndebug,可以消除宏产生的代码。在<cassert>中使用的ndebug是一个标记,用来改变宏产生代码的方式。

在本书后面,会看到对于assert()有一些更复杂的可供选择的方式。