assert 含义和用法
时间:2010-04-07 来源:flyfordream_h
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
......
assert( n != 0);
k = 10/ n;
......
assert只有在Debug版本中才有效,如果编译为Release版本则被忽略。
assert(表达式);
如果 表达式 的结果为真,则顺利通过,如果为假,中断程序运行。
但是这是在debug模式下的情况,在release模式下,assert相当于“空语句”,编译器会忽略它,也就是说assert在release模式下不起作用。
这是一个宏(而不是函数),如果其中的表达式为假的话就quit程序,一般在调试的时候使用,在VC中需要在debug模式时才有用
编译器通过静态分析代码来查错,断言程序自动检测运行时刻错误,我们就能尽早发现错误。一般有下面几个类型
ANSI C断言
assert(),需包含<assert.h>和定义NDEBUG
C运行时刻函数库断言
需包含<crtdbg.h> 是VC++中的特殊断言
_ASSERT不显示失效表达式
_ASSERTE显示失效表达式,但不支持Unicode
MFC库的断言
ASSERT宏和_ASSERT宏
MFC还提供了ASSERT宏的几个变种,象VERIFY、ASSERT_VALID等