说明:
本文章旨在总结备份、方便以后查询,由于是个人总结,如有不对,欢迎指正;另外,内容大部分来自网络、书籍、和各类手册,如若侵权请告知,马上删帖致歉。
QQ 群 号:513683159 【相互学习】
内容来源:
C语言 assert 函数 - C语言零基础入门教程、assert() 断言函数,用于在调试过程中捕捉程序错误、C语言解读assert函数
一、函数简介
assert()
常称为断言函数,大部分编译器下assert()
是宏不是函数。
1️⃣宏原型:void assert( int expression );
2️⃣头文件:assert.h
3️⃣函数功能:
通过检查表达式expression
的值来决定是否需要终止执行程序,通常用于调试中捕捉程序错误。
若表达式的值为0(条件不成立),则向标准输出流打印出错信息,调用abort()
终止信息
若表达式的值为非0(条件成立),则无任何作用。
4️⃣返回值:无
5️⃣注意:
1.默认情况下,assert()
宏仅在debug版本(调试版本)起作用,在release版本(发行版本)被忽略。
2.使用asser()
在函数开始处检验传入参数的合法性
3.每个asser()
只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败。
4.频繁的调用会极大的影响程序的性能,增加额外的开销。
5.不要用会改变环境的语句作为断言的表达式。
二、函数示例
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
int main( void )
{
FILE *fp;
fp = fopen( "456.txt", "w" ); //以可写的方式打开一个文件,如果不存在就创建一个同名文件
assert( fp ); //所以这里不会出错
fclose( fp );
fp = fopen( "123.txt", "r" ); //以只读的方式打开一个文件,如果不存在就打开文件失败
assert( fp ); //所以这里出错
fclose( fp ); //程序永远都执行不到这里来
return 0;
}