关于C语言中assert函数和可变参数介绍
写下这些自己不熟悉的事情,闲暇的时候看看,方便记忆。人在做,天在看,但管学习,莫问前程。
诊断库
assert.h支持的诊断库是设计用于辅助调试程序的小型库。他有assert()宏构成,该宏接受整数表达式为参数。
assert 宏的作用是标识出程序某个条件应为真的关键位置,并在条件为假的时候用assert()语句终止程序。
使用assert()方式有几个好处,他能自动识别文件,自动识别发生的问题的行号。还有就是不用改变代码就能开启或禁止assert()宏的机制
#define NDEBUG
将上面的一行代码放在assert()前面就能禁止宏assert() 。
可变参数
可变参数的头文件是stdarg.h
使用步骤:
在函数原型中使用省略号;
在函数定义中创建一个va_list类型的变量;
用宏将该变量初始化一个参数列表;
用宏访问这个参数列表;
用宏完成清理工作。
stdarg.h文件中使用va_starta把参数列表复制到va_list中,访问参数列表里面的内容使用的是va_arg,最后使用va_end完成清理工作,例如释放动态分配的用于存放参数的内存。不提供后退先前参数的办法。
另在C99中提供和va_copy将第二个参数复制到第一个参数中。