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