assert.h中制定义了assert函数。代码很少,但是必须注意其对NDEBUG的回应。
使用时只需要加入assert.h的头文件然后就可以进行断言。
例子:
//#define NDEBUG
#include <assert.h>
int main(){
int a=10;
int b=9;
assert(a<b);
return 0;
}
这里不满足断言假设,所以程序停止。
但是将第一行的注释去掉后,就相当定义了NDEBUG也就是取消断言功能这时时候断言执行空,所以断言不起作用。
其内部实现框架:
#undef assert #ifdef NDEBUG #define assert(test) ((void) 0) #else #define assert(test) ... #endif