1.C预备知识
关于断言:
断言其实就是一个宏定义
void assert_failed(char * ,int ); //断言失败执行的函数
#if define(DEBUG) //在DEBUG模式下进行调用
#define ASSERT(expr) if(!(expr)) \
assert_failed(_FILE_,_LINE_) //宏定义,如果断言失败则执行函数
#else
#define ASSERT(exper) //非DEBUG模式下,不执行断言函数
#endif
void assert_failed(char * file,int line){
printf("Assertion failed in %s at line %d\n",file,line);
while(1){
//死循环等待程序员检测为何断言失败
}
}
在C的编译器环境下有;
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
int main(v0id){
FILE * fp = NULL;
fp = fopen("a.txt","w");
assert(fp);
fclose(fp);
fp = fopen("b.txt","r");
assert(fp); //这里出错,显示文件名和行数
fclose(fp);
return 0;
Assertion failed! //断言失败
Program: C:\Users\ \Desktop\C\ \duanyan.exe
File: C:\Users\duanyan.c, Line 14
Expression: fp
This application has reques