西游记每一回的概括:第一篇:assert.h快速入门 - 梅花香自苦寒来 - 博客园
来源:百度文库 编辑:九乡新闻网 时间:2024/04/24 14:30:42
第一篇:assert.h快速入门
首发自:http://blog.yaohuiji.com/
欢迎转载,作者期望转载时带上原文链接,不过这不是必须的。但务必在文章标题处标明【转载】分类: C标准库快速入门
简介:
头文件assert.h唯一的目的是提供宏assert的定义。如果断言非真(expression==0),则程序会在标准错误流输出提示信息,并使程序异常中止( 调用abort() )。
定义:
view sourceprint?1
void
assert
(
int
expression);
用法:
view sourceprint?01
//#define NDEBUG
02
#include
03
04
int
main(
int
argc,
char
* argv[] )
05
{
06
int
a = 12;
07
int
b = 24;
08
09
assert
( a > b );
10
11
printf
(
"a is larger than b!"
);
12
13
return
0;
14
}
直接运行上面的程序会发现程序中止,printf并未执行,且有这样的输出:
view sourceprint?1
main: Assertion `a > b' failed.
原因就是因为a其实小于b,导致断言失败,assert输出错误信息,并调用abort()中止了程序执行。
接下来,我们把程序第一行的注释取消掉看看,即定义了宏NDEBUG以后会导致程序执行结果有什么变化:
1
a is larger than b!
是的,程序正常执行完毕,且输出了“a is larger than b!”这句话,但这个结果在逻辑上明显是错的,因为我们期望的是a大于b才输出这句话。
由此我们可以看出assert和NDEBUG的作用:
宏NDEBUG会影响assert的行为,如果定义了NDEBUG,宏assert就什么也不干,如果没有定义,则assert会在断言失败时调用abort()中止程序执行,并输出错误信息。这种行为对我们调试程序是不可或缺的!
首发自:http://blog.yaohuiji.com/
欢迎转载,作者期望转载时带上原文链接,不过这不是必须的。但务必在文章标题处标明【转载】分类: C标准库快速入门
第一篇:assert.h快速入门 - 梅花香自苦寒来 - 博客园
第三篇:errno.h快速入门 - 梅花香自苦寒来 - 博客园
第二篇:ctype.h快速入门 - 梅花香自苦寒来 - 博客园
梅花香自苦寒来
梅花香自苦寒来
梅花香自苦寒来
梅花香自苦寒来..
梅花香自苦寒来...
梅花香自苦寒来!
梅花香自苦寒来
梅花香自苦寒来
梅花香自苦寒来
梅花香自苦寒来!
梅花香自苦寒来
梅花香自苦寒来(组图)
梅花香自苦寒来【音画】
厚积薄发--梅花香自苦寒来(张文军)
梅花香自苦寒来a
梅花香自苦寒来(图)
梅花香自苦寒来(组图)
梅花香自苦寒来2
梅花香自苦寒来(画)
梅花香自苦寒来 NEW
梅花香自苦寒来[7P]