abort与assert

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);
}



猜你喜欢

转载自blog.csdn.net/znzxc/article/details/80398941