Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 336
#1

Передача препроцессорных определений в командной строке - C++

02.08.2014, 16:35. Просмотров 392. Ответов 8
Метки нет (Все метки)

Здравствуйте!

Подскажите пожалуйста, как передать препроцессорное определение через командную строку. То есть пишется код, который проверяет определение DEBUG (#ifndef DEBUG) и если оно определено, то вставляются, допустим, инварианты. Хочу, научиться передавать определение DEBUG не вручную определяя, а через консоль. Есть такие методы? (использую MVS 2012)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6471 / 2246 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.08.2014, 16:39     Передача препроцессорных определений в командной строке #2
/D "anything"
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2014, 17:40     Передача препроцессорных определений в командной строке #3
BESSON_off, нет таких методов т.к #ifndef это препроцессорная директива и работает она на этапе линковки. Максимум что можно сделать передавать параметром - это какой то флаг и в зависимости от него производить ту или иную отработку кода
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,600
Завершенные тесты: 1
02.08.2014, 20:22     Передача препроцессорных определений в командной строке #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
работает она на этапе линковки
не на этапе линковки, а в самом начале - до компиляции.
-=ЮрА=-
02.08.2014, 21:24
  #5

Не по теме:

Цитата Сообщение от zss Посмотреть сообщение
не на этапе линковки, а в самом начале - до компиляции.
- zss, Вам слово препроцессор чего- нибудь говорит?Или привыкли к интерактивному линку от visual studio?
почитайте http://itandlife.ru/programming/cpp/...m-na-yazyke-c/

Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 21:32     Передача препроцессорных определений в командной строке #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
И что ты хочешь доказать этой ссылкой кроме собственной неправоты?
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2014, 22:07     Передача препроцессорных определений в командной строке #7
Это даже не смешно!
http://itandlife.ru/programming/cpp/...m-na-yazyke-c/
Сначала программа передается препроцессору, который выполняет директивы, содержащиеся в ее тексте (например, включение в текст так называемых заголовочных файлов — текстовых файлов, в которых содержатся описания используемых в программе элементов).

http://www.firststeps.ru/foxpro/helpfox/r.php?4
Выполняет условное включение группы команд в код на этапе компиляции, если определена константа этапа компиляции.

Синтаксис

#IFDEF | #IFNDEF ConstantName
Commands
[#ELSE
Commands]
#ENDIF
Параметры
#IFDEF
Указывает, что на этапе компиляции следует включить заданную группу команд, если была определена константа этапа компиляции с именем ConstantName.

http://msdn.microsoft.com/ru-ru/library/teas0593.aspx
Директива #define создает макрос, представляющий собой ассоциацию обычного или параметризованного идентификатора со строкой токена. После определения макроса, компилятор может заменить строку токена для каждого вхождения идентификаторов в файле источника.
Добавлено через 4 минуты
вначале так называемый препроцессор делает подстановку код того что задефайнено и исключает из кода то что было #ifndef, дальше идёт связывание. Такие вещи надо знать http://ru.wikipedia.org/wiki/Препроцессор
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
02.08.2014, 22:09     Передача препроцессорных определений в командной строке #8
-=ЮрА=-, ты вообще понял, о чем zss говорил? Директивы препроцессора к стадии линковки никакого отношения не имеют. Если это конечно не какие-нибудь непереносимые #pragma.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2014, 14:55     Передача препроцессорных определений в командной строке
Еще ссылки по теме:

Запуск в командной строке C++
Переменные в обращении к командной строке C++
C++ Тетрис в командной строке
C++ Блокировка потоков в командной строке
Передача числа через аргумент командной строки C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
BESSON_off
 Аватар для BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 336
11.08.2014, 14:55  [ТС]     Передача препроцессорных определений в командной строке #9
Спасибо парни!
Yandex
Объявления
11.08.2014, 14:55     Передача препроцессорных определений в командной строке
Ответ Создать тему
Опции темы

Текущее время: 23:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru