我想知道如何使用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%,没有其他文件定义/重新定义任何其他内容。
答案 0 :(得分:0)
您需要使用反斜杠对括号和分号进行转义:
DEFINES += TEMPORARY_UNUSED\\(x\\)=\\(void\\)x\\;
否则()和; -D编译器参数中的则将被解释为更复杂命令的一部分。