Qmake DEFINES宏与参数

时间:2018-07-01 11:01:42

标签: macros c-preprocessor qmake

我想知道如何使用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 ++预处理器宏以及我的宏如何导致编译错误。

PS 我很清楚Q_UNUSED宏,但我更喜欢有一个宏,它不仅指示变量未使用,而且指示为什么尚未使用。

P.S。。我发布的代码是我项目的100%,没有其他文件定义/重新定义任何其他内容。

1 个答案:

答案 0 :(得分:0)

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

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

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