【问题标题】:Qmake DEFINES macro with parameter带参数的 Qmake DEFINES 宏
【发布时间】:2018-07-01 11:01:42
【问题描述】:

我想知道如何使用 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%,没有更多的文件可以定义/重新定义其他任何内容。

【问题讨论】:

    标签: macros c-preprocessor qmake


    【解决方案1】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多