assert()函数用法

 

assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义: #include <assert.h> void assert( int expression ); #assert的作用 对于现行表达式expression,如果真值为假,向stderr打印错误信息,调用abort结束程序

int main( void )
{
    FILE *fp;
    fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件
    assert( fp );                           //所以这里不会出错
    fclose( fp );
    
    fp = fopen( "noexitfile.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败
    assert( fp );                           //所以这里出错
    fclose( fp );                           //程序永远都执行不到这里来
    return 0;
}

#缺点 已放弃使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。 #注意事项

  • 最好每次只检测一个条件,当有多个条件时,即使能够检测错误,但是无法判断具体出错的式子

  • 不能使用改变环境的语句,如assert(++i < 100)

  • assert和后面的语句应空一行,以形成逻辑和视觉上的一致感。