void abort(void);终止程序执行,直接从调用的地方跳出。
头文件#include <stdlib.h>
#include <stdio.h> #include <stdlib.h> int main () { FILE *fp; fp = fopen( "abort.txt","r" );//文件并不存在 if(fp == NULL) abort(); fclose(fp);//程序执行不到这里 return(0); }
assert是宏,不是函数。定义在<assert.h>中
void assert(int expression);
先计算expression的值,如果为假,调用abort()终止程序。
#include <stdio.h> #include <assert.h> int main () { FILE *fp; fp = fopen( "abort.txt","r" );//文件并不存在 assert(fp != NULL); fclose(fp);//程序执行不到这里 return(0); }
频繁调用assert会影响程序性能,一般调试所用。
调试完成后,可以在头文件<assert.h>前加入#define NDEBUG,就可以忽略assert。
#include <stdio.h> #define NDEBUG #include <assert.h> int main () { FILE *fp; fp = fopen( "abort.txt","r" );//文件并不存在 assert(fp != NULL); fclose(fp); return(0); }