[cpp]
//定义NDEBUG
#include<stdio.h>
#include<stdlib.h>
#define NDEBUG
#include<assert.h>
int main()
{
printf("1 ok hello \n");
assert(1==4);;
printf("2 ok exit \n");
return 0;
}
[cpp]
结果:
********************************
1 ok hello
2 ok exit
****************************************
[cpp]
原理:
#define assert(test) if(!(test))\
fprintf(stderr,"the failed : %s file %s ,line %i\n",#test, __FILE__,__LINE__);\
abort();
[cpp]
模拟:
#include<stdio.h>
#include<stdlib.h>
//#define NDEBUG
//#include<assert.h>
#define Assert(test) if(!(test)) fprintf(stderr,"Assertion failed: %s, file %s, line %i\n", #test, __FILE__, __LINE__);abort()
int main()
{
printf("1 ok hello \n");
Assert(1==4);
printf("2 ok exit \n");
return 0;
}
[cpp]
结果:
**************************************
1 ok hello
Assertion failed: 1==4, file assert_h_ex.c, line 9
已放弃