Макрос Qmake DEFINES с параметром - PullRequest
0 голосов
/ 01 июля 2018

Я хочу знать, как определить макрос препроцессора C ++, используя переменную qmake DEFINES. Я пытался сделать следующее:

Файл проекта

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. Я понятия не имею, как определение макроса (кстати, очень простое) может вызвать ошибки в процессе сборки.

Это макроопределения, использующие #define в c ++. Они работают так, как я ожидал

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

Вопрос: как определить макрос препроцессора c ++ с помощью qmake DEFINES и как мой макрос мог вызвать ошибки компиляции.

PS Я прекрасно осведомлен о макросе Q_UNUSED, но я предпочитаю иметь макрос, который указывает не только на то, что переменная не используется, но и на , почему она не используется.

P.S. Код, который я разместил, составляет 100% моего проекта, больше нет файлов, которые определяют / переопределяют что-либо еще.

1 Ответ

0 голосов
/ 02 июля 2018

Вы должны избегать скобок и точки с запятой с обратной косой чертой:

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

В противном случае () и; в аргументе компилятора -D будет интерпретироваться как часть более сложной команды.

...