断言用于检查是否满足条件(前置条件、后置条件、不变量)并帮助程序员在调试阶段发现漏洞。
例如,
void f(int *p)
{
assert(p);
p->do();
}
我的问题是我们是否需要假设在发布模式下无法满足条件并相应地处理案例?
void f(int *p)
{
assert(p);
if (p)
{
p->do();
}
}
毕竟,断言意味着它测试的条件永远不应该是错误的。但是,如果我们不检查它并且它失败了,程序就会崩溃。听起来是个两难的选择。你们是怎么处理的?