Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

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

Подскажите пожалуйста, как передать препроцессорное определение через командную строку. То есть пишется код, который проверяет определение DEBUG (#ifndef DEBUG) и если оно определено, то вставляются, допустим, инварианты. Хочу, научиться передавать определение DEBUG не вручную определяя, а через консоль. Есть такие методы? (использую MVS 2012)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2014, 16:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача препроцессорных определений в командной строке (C++):

Передача числовых аргументов командной строке - C++
Написал программу, программа компилируется успешно, но тут же завершается с кодом 0x01. Программа взята из учебника по C++ и как она...

Передача аргументов командной строки - C++
Здравствуйте. Подскажите пожалуйста, зачем в этом коде "return 1;"? #include <iostream> #include <cstdlib> using namespace std; ...

вопроосы о препроцессорных командах - C++
1) Вопрос о обертке всего содержимого .h файла. Допустим есть файл Shape.h Есть ли разница между: #ifndef SHAPE_GUARD #define...

Передача аргументов командной строки функции main() - C++
Добрый день Дана задача: Напишите программу, которая запрашивает пароль, задаваемый в команд- ной строке. Ваша программа не должна...

Передача числа через аргумент командной строки - C++
Здравствуйте. Мне необходимо передать число в программу, а затем работать с этим числом. Проблема состоит в том, что при...

Передача параметров командной строки в main(): что происходит в коде? - C++
Здравствуйте. Объясните пожалуйста, что идет в main ? ... printf("IMAGE NAME: %s\n", filename); ... void A(int h) { //это...

8
Vourhey
Почетный модератор
6486 / 2260 / 123
Регистрация: 29.07.2006
Сообщений: 12,536
02.08.2014, 16:39 #2
/D "anything"
2
-=ЮрА=-
Заблокирован
Автор FAQ
02.08.2014, 17:40 #3
BESSON_off, нет таких методов т.к #ifndef это препроцессорная директива и работает она на этапе линковки. Максимум что можно сделать передавать параметром - это какой то флаг и в зависимости от него производить ту или иную отработку кода
0
zss
Модератор
Эксперт С++
6578 / 6140 / 2022
Регистрация: 18.12.2011
Сообщений: 15,999
Завершенные тесты: 1
02.08.2014, 20:22 #4
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
работает она на этапе линковки
не на этапе линковки, а в самом начале - до компиляции.
1
-=ЮрА=-
02.08.2014, 21:24
  #5

Не по теме:

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

0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.08.2014, 21:32 #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
И что ты хочешь доказать этой ссылкой кроме собственной неправоты?
1
-=ЮрА=-
Заблокирован
Автор 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/Препроцессор
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.08.2014, 22:09 #8
-=ЮрА=-, ты вообще понял, о чем zss говорил? Директивы препроцессора к стадии линковки никакого отношения не имеют. Если это конечно не какие-нибудь непереносимые #pragma.
1
BESSON_off
3 / 0 / 1
Регистрация: 08.07.2013
Сообщений: 351
11.08.2014, 14:55  [ТС] #9
Спасибо парни!
0
11.08.2014, 14:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2014, 14:55
Привет! Вот еще темы с ответами:

Запуск в командной строке - C++
#include "stdafx.h" #include <iostream> using namespace std; int main(int argc, int argv) { if (argc > 1)// если...

Параметры в командной строке - C++
При запуске программы с командной строки, ей также с cmd передаются параметры. Затем в программе эти параметры присваиваются или char a или...

Тетрис в командной строке - C++
Возможно ли написать тетрис прямо в командной строке?Если да то как вывести квадрат который в тетрисе основа всех фигур)

Калькулятор в командной строке - C++
В командной строке заданы операнды и операция (+, -, *, /, %). Выполнить операцию, вывести результат. Например: в командной строке...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.