assert()断言函数,用于在调试过程中捕捉程序错误
void assert (int expression);
断言函数,用于在调试过程中捕捉程序的错误。
“断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。
assert() 会对表达式expression
进行检测:
- 如果
expression
的结果为 0(条件不成立),那么断言失败,表明程序出错,assert() 会向标准输出设备(一般是显示器)打印一条错误信息,并调用 abort() 函数终止程序的执行。 - 如果
expression
的结果为非 0(条件成立),那么断言成功,表明程序正确,assert() 不进行任何操作。
要打印的错误信息的格式和内容没有统一的规定,这和标准库的具体实现有关(也可以说和编译器有关),但是错误信息至少应该包含以下几个方面的信息:
- 断言失败的表达式,也即
expression
; - 源文件名称;
- 断言失败的代码的行号。
大部分编译器的格式如下所示:
Assertion failed: expression, file filename, line number
其实就是一个判断,如果判断为假,运行就会停止,并报一个判断错误。