Страницы

Поиск по вопросам

среда, 5 февраля 2020 г.

Компиляция программы с другими значениями переменных

#cpp #c


Уже задавал похожий вопрос, но возникла надобность передать строку в программу на
стадии компиляции.

Есть код:

#ifdef VALUE
    std::cout << VALUE << std::endl;
#endif // VALUE
#ifndef VALUE
    char* VALUE = "not defined";
    std::cout << VALUE << std::endl;
#endif // !VALUE


При компиляции с параметром 

cl /DVALUE=100 core.cpp


Всё работает и программа выдаёт число.Как я понял, ключ /D - это вариант только для
чисел, а есть ли аналогичный ключ для строк?
    


Ответы

Ответ 1



Это не для чисел, а для литералов. Просто в тексте VALUE до компиляции будет заменено на то, что вы подставите. Хотите с кавычками - подставьте в командной строке Windows cl /DVALUE=\"100\" А вообще - читайте о препроцессоре, это большая и интересная тема... Например, тут.

Ответ 2



Строка компиляции для clang (FreeBSD): clang++ -std=c++11 -DVALUE='"Some text"' Hello.cpp -o Hello Сам тестовый код: #ifndef VALUE #define VALUE "Test" #endif int main() { std::cout << "Value: " << VALUE << std::endl; return 0; } Все работает норм.

Комментариев нет:

Отправить комментарий