Optimización, afirma y modo de liberación
Considera una función
void f() {
assert(condition);
...
}
En modo de depuración, donde las afirmaciones están habilitadas, el compilador es libre de asumircondition
se mantiene, ya que el código restante no se ejecutará si no lo hace.
Sin embargo, en el modo de lanzamiento, creo que el compilador solo verá
void f() {
...
}
y ya no puedo asumircondition
.
¿Hay alguna directiva del compilador o trucos de aserción estática para que el compilador sepa sobre ciertas invariantes?