我無法在發佈版本中找到關於Q_ASSERT語義的明確聲明。如果沒有斷言檢查,那麼斷言的表達式是否被評估?Q_ASSERT發佈構建語義
考慮下的所有潛在的Qt構建配置如下代碼
Q_ASSERT(do_something_report_false_if_failed());
威爾do_something_report_false_if_failed()
運行?難道是安全的(即使有點冗長,不易閱讀)要做到這一點,而不是:
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
後者的方法有ASSERT失敗是那麼詳細的缺點,但也許更加清楚地表明該語句是執行?
這與使用常規'assert'和'NDEBUG'宏的情況完全相同。 –