Утверждение используется для проверки выполнения условия (предусловие, постусловие, инварианты) и помогает программистам находить дыры на этапе отладки.
Например,
void f(int *p)
{
assert(p);
p->do();
}
Мой вопрос: нужно ли нам предполагать, что условие не может быть выполнено в режиме выпуска, и обрабатывать этот случай соответствующим образом?
void f(int *p)
{
assert(p);
if (p)
{
p->do();
}
}
В конце концов, утверждение означает, что условие, которое оно проверяет, НИКОГДА не должно быть ложным. Но если, если мы его не проверим, и он выйдет из строя, программа выйдет из строя. Похоже на дилемму. Как вы, ребята, с этим справляетесь?