#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; } Все работает норм.
Комментариев нет:
Отправить комментарий