带有参数的Qmake DEFINES宏

Qmake DEFINES macro with parameter

我想知道如何使用 qmake DEFINES 变量定义 C++ 预处理器宏。我已尝试执行以下操作:

项目文件

TEMPLATE = app
CONFIG += c++14 console

SOURCES += main.cpp

DEFINES  += "TEMPORARY_UNUSED(x)=\"(void)x;\""
DEFINES  += "BASE_CLASS_UNUSED(x)=\"(void)x;\""

Main.cpp 文件

int main() {
    int hello;
    TEMPORARY_UNUSED(hello)
    BASE_CLASS_UNUSED(hello)
}

但这导致了以下错误:[main.o] Error 2。我不知道宏定义(顺便说一句非常简单)如何导致构建过程出错。

这是使用c++的#define的宏定义。他们的工作正如我所料

#define TEMPORARY_UNUSED(x) (void)x;
#define BASE_CLASS_UNUSED(x) (void)x;

问题是:如何使用 qmake DEFINES 定义 C++ 预处理器宏以及我的宏如何导致编译错误。

P.S. 我完全了解 Q_UNUSED 宏,但我更喜欢有一个宏,它不仅指示变量未使用,而且还有为什么它没有被使用。

P.S. 我发布的代码是我项目的 100%,没有更多的文件 define/redefine 其他任何东西。

您需要使用反斜杠转义括号和分号:

DEFINES += TEMPORARY_UNUSED\(x\)=\(void\)x\;

否则()和;在 -D 编译器参数中将被解释为更复杂命令的一部分。