QT_NO_DEBUG 是否导致 NDEBUG 的定义?

Does QT_NO_DEBUG cause a definition of NDEBUG?

我正在审核一些使用 Qt 框架编写的源代码。典型的发布构建命令行输出包括 QT_NO_DEBUG 预处理器宏,但 包括 Posix 的 NDEBUG 预处理器宏。 Qt documentation on QT_NO_DEBUG 不讨论 NDEBUG(顺便说一句,我可能没有找到正确的文档)。

Qt 的 QT_NO_DEBUG 是否导致 Posix 的 NDEBUG 的定义?

没有。添加

CONFIG(release, debug|release): DEFINES += NDEBUG

到您的 .pro 文件和类似

的测试
{
    bool valuesEqual = false;

#ifdef NDEBUG
#ifdef QT_NO_DEBUG
    valuesEqual = true;
#endif
#endif

#ifndef NDEBUG
#ifndef QT_NO_DEBUG
    valuesEqual = true;
#endif
#endif

    EXPECT_TRUE(valuesEqual);
}