Visual Studio определяет директиву препроцессора в командной строке

#ifdef DEBUG_TEST
std::cout << "Hello" << std::endl;
#endif

Как я могу использовать #define DEBUG_TEST в качестве аргумента командной строки в VS? Я пробовал /DDEBUG_TEST и директива не определяется.


person James King    schedule 25.01.2016    source источник
comment
Где вы добавили /DDEBUG_TEST? Это работает в командной строке cl, но если вы введете его в VS IDE в разделе «Определения препроцессора», вам нужно будет ввести только DEBUG_TEST.   -  person dxiv    schedule 25.01.2016
comment
почему бы просто не использовать раздел препроцессора.... обновил мой ответ   -  person Keith Nicholas    schedule 26.01.2016


Ответы (2)


не уверен, что это проблема форматирования в вашем вопросе, но это должно сработать: -

 /D "DEBUG_TEST"

или введите его в разделе препроцессора

введите здесь описание изображения

person Keith Nicholas    schedule 25.01.2016

Ответ:

/DDEBUG_TEST

Без пробелов, без кавычек. Я считаю, что вы также можете использовать синтаксис gcc с cl, но я не уверен. Если это так, это также должно работать:

-DDEBUG_TEST

Пример использования:

cl /DDEBUG_TEST source_code.cpp

Вот официальная документация: https://msdn.microsoft.com/en-us/library/hhzbb5c8.aspx

person Justin Time - Reinstate Monica    schedule 25.01.2016
comment
Я просмотрел документацию MS, и она не работает. - person James King; 26.01.2016
comment
@JamesKing Вы запускаете cl из командной строки Visual Studio? Потому что /Dmacro_name[=value] — правильный синтаксис для cl, и я использую его при компиляции программ. - person Justin Time - Reinstate Monica; 26.01.2016
comment
Я ввожу его в поле Аргументы командной строки в свойствах. - person James King; 26.01.2016
comment
Какое окно командной строки и какая версия Visual Studio? Я вижу несколько ящиков (один для компоновщика, один для инструмента манифеста и т. д.), поэтому он может быть не в том (обратите внимание, что моя версия VStudio немного устарела, ваша может отличаться от моей). См. первый раздел msdn.microsoft.com/en-us/library/3600tzxa. .aspx и убедитесь, что он указан в поле? - person Justin Time - Reinstate Monica; 26.01.2016
comment
В частности, он должен быть в разделе «Свойства» > «Свойства конфигурации» > «C/C++» > «Командная строка», который, как мне кажется, передает аргументы в cl. Попробуйте ввести опцию там и посмотрите, работает ли она. - person Justin Time - Reinstate Monica; 26.01.2016
comment
Я использовал поле «Аргументы командной строки» на вкладке «Отладка». - person James King; 26.01.2016
comment
Ах, есть проблема. Здесь вы вводите аргументы для передачи программе, которую отлаживаете, а не компилятору. Перейдите в раздел C/C++ › Command Line и попробуйте ввести его там. - person Justin Time - Reinstate Monica; 26.01.2016