Skip to main content

assert

· 2 min read

assert()断言函数,用于在调试过程中捕捉程序错误

void assert (int expression);

断言函数,用于在调试过程中捕捉程序的错误。

“断言”在语文中的意思是“断定”、“十分肯定地说”,在编程中是指对某种假设条件进行检测,如果条件成立就不进行任何操作,如果条件不成立就捕捉到这种错误,并打印出错误信息,终止程序执行。

assert() 会对表达式expression进行检测:

  • 如果expression的结果为 0(条件不成立),那么断言失败,表明程序出错,assert() 会向标准输出设备(一般是显示器)打印一条错误信息,并调用 abort() 函数终止程序的执行。
  • 如果expression的结果为非 0(条件成立),那么断言成功,表明程序正确,assert() 不进行任何操作。

要打印的错误信息的格式和内容没有统一的规定,这和标准库的具体实现有关(也可以说和编译器有关),但是错误信息至少应该包含以下几个方面的信息:

  • 断言失败的表达式,也即expression
  • 源文件名称;
  • 断言失败的代码的行号。

大部分编译器的格式如下所示:

Assertion failed: expression, file filename, line number

其实就是一个判断,如果判断为假,运行就会停止,并报一个判断错误。