Как определить значение для директив препроцессора C ++ во время компиляции? - PullRequest
0 голосов
/ 19 июня 2020

Предположим, у меня есть следующий код:

int main() {

#ifdef NEWMETHOD
    val = new_method("hello world!");
#else
    val = old_method("hello world!");
#endif

    return 0;
}

Как я могу определить NEWMETHOD во время компиляции?

Ответы [ 2 ]

3 голосов
/ 19 июня 2020

Вы можете

  • Определить его, вставив

    #define NEWMETHOD
    

    в исходный код перед его использованием, или

  • Добавьте -DNEWMETHOD к вызову вашего компилятора (работает со всеми популярными компиляторами, включая G CC, clang и MSV C).

    В зависимости от вашей системы сборки вы можете добавить это к CFLAGS (C) или CXXFLAGS (C ++) переменные среды.

3 голосов
/ 19 июня 2020

Вам просто нужно написать

#define NEWMETHOD

перед выполнением проверки #ifdef.

Конечно, тогда вам не нужно будет писать #ifdef в первой строке. место.

Если вы хотите определить макрос без изменения исходного кода, вы можете передать его во время компиляции с флагом -D, например:

g++ -DNEWMETHOD main.cpp

Очевидно, замените указанные c команда компилятора и имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...