断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。 断言用来检测调用者(程序员)的调用合理性,如输入参数,输出参数等,而不是用来检测执行时的错误。对于内存分配失败,文件句柄和其他运行错误不事宜用断言,应该采用异常机制来进行处理。
断言是用来发现运行时刻错误的,发现的错误是关于程序实现方面的。
断言中的布尔表达式显示的是某个对象或者状态的有效性而不是正确性。
断言在条件编译后只存在于调试版本中,而不是发布版本里。
断言不能包含程序代码。
断言是为了给程序员而不是用户提供信息。
另外尽量避免使用或定义类似MFC中的VERITY(),它准入在发行版中调用代码
在使用断言时常犯的错误:
char *dup(const char* s )
{
char *s_copy=(char*)malloc(1+strlen(s));
assert(NULL!=s_copy);
return strcpy(s_copy,s);
}
Excpeion c++
高质量c++