Nie mogę znaleźć jasnego oświadczenia na temat semantyki Q_ASSERT pod kompilacjami wydań. Jeśli nie ma sprawdzania asercji, to czy to wyrażenie jest w ogóle ocenione?Q_ASSERT release build semantics
Rozważmy następujący kod
Q_ASSERT(do_something_report_false_if_failed());
Will do_something_report_false_if_failed()
działać pod wszystkimi potencjalnymi Qt budować konfiguracje? Byłoby bezpieczniejsze (choć nieco bardziej rozwlekły i mniej czytelny), aby to zrobić w zamian:
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
To ostatnie rozwiązanie ma tę wadę, że twierdzą, awarie są mniej gadatliwy, ale chyba to widać wyraźniej, że oświadczenie jest wykonany?
Dokładnie taka sama sytuacja jak w przypadku zwykłych makr "assert' i' NDEBUG'. –