assert是定义在头文件cassert中的宏
其作用是如果他的返回值不为真则终止程序。
assert(expression);
if 为假,先向stderr打印一条错误信息,再用abort终止程序
缺点:频繁调用影响程序性能,增加程序开销。
可在调用cassert后,用#define NDEBUG来禁用assert
每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
不能使用改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使用程序在真正运行时遇到问题
有的地方,assert不能代替条件过滤