C++断言assert
assert一般用于检查输入参数的合法性,方便程序员调试时定位代码
但是频繁的调用会影响程序性能,增加额外的开销。可以定义NDEBUG宏来关闭assert。
assert一般用于程序员调试BUG时,在DEBUG环境下的帮手- 在Release模式下,
NDEBUG是默认定义的,因此在Relase下,assert不起作用 - 在RelWithDebInfo下也会定义
NDEBUG,如果想要打开assert,可这么做
注意事项¶
在使用assert应注意以下几点。
一、assert只能包含只读操作,不能影响上下文
二、一次assert只检验一个条件,为了在调试时,一目了然是哪个条件不成立
//不建议
assert(nOffset>=0 && nOffset+nSize<=m_nInfomationSize);
//推荐写法
assert(nOffset >= 0);
assert(nOffset+nSize <= m_nInfomationSize);
三、assert不能代替条件判断,因为在某些条件下,assert并不启用