​assert​​ 是宏,而不是函数。它的原型定义在头文件 assert.h 中:

void assert( int expression );

宏 assert 经常用于在函数开始处检验传入参数的合法性,可以将其看作是异常处理的一种高级形式。assert 的作用是 先计算表达式 expression,然后判断:

  • 如果表达式值为假,那么它先向 stderr 打印错误信息,然后通过调用 abort 来终止程序运行。
  • 如果表达式值为真,继续运行后面的程序。

注意:​​assert​​​ 只在 ​​DEBUG​​​ 下生效,在调试结束后,可以通过在 ​​#include <assert.h>​​​ 语句之前插入 ​​#define NDEBUG​​ 来禁用 assert 调用。

#define
#include <assert.h>