Je ne trouve pas d'indication claire sur la sémantique de Q_ASSERT dans les versions de versions. S'il n'y a pas de vérification d'assertion, alors l'expression affirmée est-elle évaluée?Q_ASSERT release construction sémantique
Consultez le code suivant
Q_ASSERT(do_something_report_false_if_failed());
Will do_something_report_false_if_failed()
run sous toutes les Qt potentiels des configurations de construction? Serait-il plus sûr (même si un peu plus bavard et moins lisible) pour ce faire à la place:
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
Cette dernière approche a l'inconvénient que AFFIRMER échecs sont moins bavard, mais peut-être montre plus clairement que la déclaration est réalisé?
C'est exactement la même situation que pour les normales 'assert' et' NDEBUG'. –