C++入门——assert的使用
ASSERT()是什么ASSERT()一般被称为断言,是一个调试程序时经常使用的宏。它被定义在<assert.h>头文件中,通常用于判断程序中是否出现了非法的数据,在程序运行时,它计算括号内的表达式的值。如果表达式的值为false(0),则程序报告错误,终止运行;如果不为0,则继续执行后面语句。例如:ASSERT(n != 0);k = 10/n;ASSERT()与assert()AS
ASSERT()是什么
ASSERT()一般被称为断言,是一个调试程序时经常使用的宏。它被定义在<assert.h>头文件中,通常用于判断程序中是否出现了非法的数据,在程序运行时,它计算括号内的表达式的值。如果表达式的值为false(0),则程序报告错误,终止运行;如果不为0,则继续执行后面语句。
例如:
ASSERT(n != 0);
k = 10/n;
ASSERT()与assert()
-
ASSERT()只在Debug版本中有,在Release版本中则被忽略 -
ASSERT()是宏,而assert()是ANSIC标准中规定的函数,它与ASSERT()的功能类似,但是可以应用在Release版本中。
assert()的缺点
频繁地调用会极大地影响程序的性能,增加额外开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入#define NDEBUG来禁用assert()调用。
assert()使用的注意事项
-
在函数开始处检验传入参数的合法性
-
每个
assert()一般只检验一个条件,而不对多个条件进行检验,因为当同时检验多个条件时,如果断言失败,则无法直观地判断是哪个条件失败 -
不要使用
assert()作为实现函数逻辑的语句,因为assert()一般在Release版本中,就禁用了 -
并非所有的
assert()都能代替过滤条件,对于有的地方,assert()无法达到条件过滤的目的 -
一般在编程的时候,为了形成逻辑和视觉上的一致性,会将
assert()与后面的语句之间空一行隔开
更多推荐



所有评论(0)