Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизВозможности компилятора Найти похожие ветки
← →
Mouserx (2006-07-05 12:26) [0]Здраствуйте мастера. Интересует следующее:
Можно ли заставить компилятор собирать код в разных вариантах. Например ввести какойто флаг компиляции, и если он установлен, то делать так, чтобы компилятор не видел и некомпилировал некоторые ф-ции, методы класса и тд.
← →
Desdechado © (2006-07-05 12:31) [1]{$DEFINE}
{$IFDEF}
{$IFNDEF}
← →
Amoeba © (2006-07-05 12:32) [2]
> Mouserx (05.07.06 12:26)
> Здраствуйте мастера. Интересует следующее:
> Можно ли заставить компилятор собирать код в разных вариантах.
> Например ввести какойто флаг компиляции, и если он установлен,
> то делать так, чтобы компилятор не видел и некомпилировал
> некоторые ф-ции, методы класса и тд.
Можно. Для этого существуют директивы условной компиляции. Как их использовать, есть в любом приличном руководстве по Паскалю, а также в справке Delphi.
← →
Mouserx (2006-07-05 12:32) [3]Вот в Си такое есть ... а как в Делфи использовать? ... можно по подробнее?
← →
Desdechado © (2006-07-05 12:32) [4]Ну, и в свойствах проекта есть место для определения таких штук, которые проверяются через указанное выше
← →
MBo © (2006-07-05 12:32) [5]$DEFINE $IFDEF и дркгие директивы условной компиляции
← →
Mouserx (2006-07-05 12:34) [6]Спасибо. Описание ненадо - Гугл помогает уже. :-)
← →
Mouserx (2006-07-05 12:49) [7]Такой еще вопросик:
В случае, если "флага не будет существовать" - ненужный код точно не будет физически в готовом продукте находиться? Или же он будет, но не будет используемым.
← →
MBo © (2006-07-05 12:51) [8]>точно не будет физически в готовом продукте находиться?
точно
← →
Desdechado © (2006-07-05 12:52) [9]Компилятор умный, неиспользуемое в EXE не включает.
Потому как внутри таких проверок может быть код, который компилируется исключительно под Kylix, например.
← →
Плохиш © (2006-07-05 12:53) [10]
> Mouserx (05.07.06 12:49) [7]
Компиляторы turbo/borland pascal, а затем и delphi не включают неиспользуемый код в исходный файл.
← →
Mouserx (2006-07-05 13:24) [11]А еще такой вопрос:
А где обьявить этот "флаг", чтобы он был виден во всех модулях (units) моей программы. я Обьявил его в main, но в других модулях он не виден. Даже написал после implementation:
uses main;
и всеравно он не видится.
← →
evvcom © (2006-07-05 13:39) [12]Все дефайны в файл, например, include.inc, а потом везде (где надо)
{$INCLUDE include.inc}
← →
Desdechado © (2006-07-05 13:39) [13][4]
← →
evvcom © (2006-07-05 14:13) [14]> [13] Desdechado © (05.07.06 13:39)
Этот вариант, имхо, удобен, когда одни и те же исходники используются в разных проектах с разными условиями компиляции. Ту же часть, которая не зависит от проекта, опять имхо, лучше все-таки в инклуд. Так нагляднее по крайней мере. Этот инклуд можно открыть на закладке редактора, там же и править, удобно переключаясь на другие модули.
← →
Mouserx (2006-07-05 14:46) [15]Desdechado, а можно по подробнее где именно это указывается? :-)
← →
StriderMan © (2006-07-05 15:53) [16]
> Desdechado, а можно по подробнее где именно это указывается?
> :-)
Project - options - Diectories/Conditionals - Conditionals - Conditional Defines
← →
Mouserx (2006-07-05 15:59) [17]Вписал туда просто MyFlag и не работает. :-(
Во всех конструкциях:
{$IFDEF MyFlag}
{$ELSE}
{$ENDIF}
компилируется код, написаный в {$ELSE}
P.S. Delphi 2005
← →
Кабан (2006-07-05 16:20) [18]Пуск\Поиск\Файлы и папки - Искать Текст
Набираешь $DEFINE
Указываешь путь к исходникам VCL
Жмешь кнопку Найти
← →
Mouserx (2006-07-05 16:22) [19]Уже разобрался ... Пока не сделаешь "Build" то флаги и соответственно код не поменяется. Вот непонятно почему обычный "Run" этого не делает.
← →
StriderMan © (2006-07-05 16:43) [20]
> Уже разобрался ... Пока не сделаешь "Build" то флаги и соответственно
> код не поменяется. Вот непонятно почему обычный "Run" этого
> не делает.
да, есть такой момент. чтобы компилятор "прочухал" о новых условиях надо пересобрать весь проект. RUN компилирует только модули, в которых были изменения, а остальное собирает из уже скомпилированных .DCU
← →
Mouserx (2006-07-05 16:45) [21]Понятненько. Всем спасибо. :-)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.046 c