标签:style blog http io ar color os sp on
#include <assert.h>
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。
//demo1.c #include <stdio.h> #include <assert.h> #include <stdlib.h> int demo1(int num) { assert(num>100); printf("demo2:%d\n",num); return 0; } //demo2.c #include <stdio.h> #include <assert.h> #include <stdlib.h> int demo2(int num) { assert(num>200); printf("demo2:%d\n",num); return 0; } //demo.c #include <stdio.h> #include <stdlib.h> int main( void ) { demo1(110); demo2(110);//不满足 num>200的条件,报错如下 return 0; }
测试现象: root@ubuntu:/work/demo# gcc *.c ;./a.out demo2:110 a.out: demo2.c:7: demo2: Assertion `num>200‘ failed. Aborted
在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>
如:
//demo2.c
#include <stdio.h> #define NDEBUG //仅对本文件起作用 #include <assert.h> #include <stdlib.h> int demo2(int num) { assert(num>200);//未编译展开宏。 printf("demo2:%d\n",num); return 0; }
现象: root@ubuntu:/work/demo# gcc *.c ;./a.out demo2:110 demo2:110
参考:
1. assert()函数用法总结
http://www.cnblogs.com/ggzss/archive/2011/08/18/2145017.html
标签:style blog http io ar color os sp on
原文地址:http://www.cnblogs.com/mylinux/p/4151610.html