Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.20;
Скачать: CL | DM;

Вниз

Возможности компилятора   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.037 c
2-1154415522
ANB
2006-08-01 10:58
2006.08.20
Как узнать имя сертификта в контейнере (дискета) через CryptoAPI?


1-1151993205
Chaser
2006-07-04 10:06
2006.08.20
Корректное удаление потока (TThread)


6-1143505652
Sergio77
2006-03-28 04:27
2006.08.20
Запрет доступа


3-1150127390
Вася
2006-06-12 19:49
2006.08.20
Как создать поле в ClientDatSet


3-1150572026
Pe+erBuild
2006-06-17 23:20
2006.08.20
D&D в гриде