我无法在发布版本中找到关于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'宏的情况完全相同。 –