Non riesco a trovare una dichiarazione chiara sulla semantica di Q_ASSERT in build di rilascio. Se non c'è un controllo di asserzione, allora l'espressione asserita è valutata?Q_ASSERT release semantics build
Si consideri il seguente codice
Q_ASSERT(do_something_report_false_if_failed());
Will do_something_report_false_if_failed()
corsa in tutte le possibili configurazioni di Qt costruire? Sarebbe più sicuro (anche se un po 'più prolisso e meno leggibile) per fare questo, invece:
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
Quest'ultimo approccio ha il rovescio della medaglia che affermano fallimenti sono meno prolissa, ma forse si vede più chiaramente che la dichiarazione è eseguito?
Questa è esattamente la stessa situazione con la normale macro 'assert' e' NDEBUG'. –