Tôi không thể tìm thấy một tuyên bố rõ ràng về ngữ nghĩa của Q_ASSERT trong bản phát hành bản phát hành. Nếu không có kiểm tra xác nhận, thì biểu thức được khẳng định được đánh giá là gì?Q_ASSERT phát hành ngữ nghĩa xây dựng
Xét đoạn mã sau
Q_ASSERT(do_something_report_false_if_failed());
Will do_something_report_false_if_failed()
chạy theo tất cả Qt xây dựng cấu hình tiềm năng? nó sẽ được an toàn hơn (mặc dù một chút dài dòng hơn và ít có thể đọc được) để làm điều này thay vì:
bool is_ok = do_something_report_false_if_failed();
Q_ASSERT(is_ok)
Cách tiếp cận thứ hai có nhược điểm là khẳng định thất bại ít tiết, nhưng có lẽ nó cho thấy rõ ràng hơn rằng tuyên bố là Thực thi?
Đó chính xác là tình huống tương tự như với macro 'assert' và' NDEBUG' thông thường. –