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

Вниз

Директивы компилятору   Найти похожие ветки 

 
Yurikon   (2007-10-01 13:50) [0]

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

Подскажите, плиз, как объявить в главном юните директиву компилятору (например {$DEFINE QQQ})так, чтобы она была доступна в юнитах, которые ссылаются на главную?


 
Palladin ©   (2007-10-01 13:55) [1]

Стандартный подход.

Создается файл (напрмер appDefs.inc) где описываются все определения. Далее в каждом юните прописывается {$I appDefs.inc}


 
Юрий Зотов ©   (2007-10-01 14:10) [2]

Объявить ее в опциях проекта.


 
Anatoly Podgoretsky ©   (2007-10-01 14:16) [3]

> Yurikon  (01.10.2007 13:50:00)  [0]

Ни как, директива действует только на модуль и не наследуется другими модулями.


 
Yurikon   (2007-10-01 15:50) [4]


> Юрий Зотов ©   (01.10.07 14:10) [2]
> Объявить ее в опциях проекта.


Спасибо, Юрий! Именно этого я и хотел, но не знал как сделать.


 
evvcom ©   (2007-10-01 16:31) [5]


> Yurikon   (01.10.07 15:50) [4]

Как бы тебе странным это не показалось, но все 3 ответа были верными. Почему не поблагодарил остальных? Видимо, у Юрия телепатор оказался самым телепаторным :)


 
Германн ©   (2007-10-01 16:44) [6]


> evvcom ©   (01.10.07 16:31) [5]
>
>
> > Yurikon   (01.10.07 15:50) [4]
>
> Как бы тебе странным это не показалось, но все 3 ответа
> были верными.

Неправда. Верным был только [3]. Остальные не соответствовали букве сабжа. :-)


 
TStas ©   (2007-10-01 21:11) [7]

>Юрий Зотов А можете немножко подробнее? Мне тоже интересно.


 
Юрий Зотов ©   (2007-10-01 23:25) [8]

> TStas ©   (01.10.07 21:11) [7]

А чего там подробного? Просто пишем свои директивы (через точку с запятой) в диалоге опций проекта (вкладка Directories/Conditionals, поле Conditional defines), а потом в любом юните можем писать IFDEF/IFNDEF.


 
evvcom ©   (2007-10-02 09:10) [9]


> TStas ©   (01.10.07 21:11) [7]

[8] - я такое использую, когда один юнит цепляется к более, чем одному проекту. Если же проект один, то вкл/откл условий, имхо, лучше делать как в [1]


> Германн ©   (01.10.07 16:44) [6]

Согласен. Но я тоже включил свой телепатор и решил, что моя шутка такого вида не будет оценена автором :)


 
Юрий Зотов ©   (2007-10-02 11:21) [10]

> evvcom ©   (02.10.07 09:10) [9]

> когда один юнит цепляется к более, чем одному проекту.
> Если же проект один, то вкл/откл условий, имхо, лучше делать как в [1]

И в одном бывает полезно. Например, для подключения отладочного кода, или для компиляции демо-версии, или...


 
evvcom ©   (2007-10-02 12:14) [11]


> Например, для подключения отладочного кода, или

Я и не говорил, что [1] - единственно правильное решение. Можно и [8], не возражаю. Я написал "имхо, лучше", т.е. мне удобнее в этом случае [1], т.к. можно открыть в многострочном редакторе *.inc файл и иметь его всегда под рукой. Удобно и наглядно.


 
Германн ©   (2007-10-02 12:26) [12]


> Юрий Зотов ©   (02.10.07 11:21) [10]
>
> И в одном бывает полезно.

Жаль только, что IDE не имеет инструмента, позволяющего автоматом отразить набор этих директив, например в Version Info.


 
Инс ©   (2007-10-02 12:42) [13]


> Германн ©   (02.10.07 12:26) [12]

Думаю, IDE имеет инструмент, позволяющий в случае необходимости сделать такой инструмент. ToolsAPI называется ;-)


 
Суслик ©   (2007-10-02 12:54) [14]

свинство в том, что не все директивы можно указать в диалоге с опциями проекта в д2007

например {$inline } можно только способом [1] сделать


 
Германн ©   (2007-10-02 13:17) [15]


> Инс ©   (02.10.07 12:42) [13]
>
>
> > Германн ©   (02.10.07 12:26) [12]
>
> Думаю, IDE имеет инструмент, позволяющий в случае необходимости
> сделать такой инструмент. ToolsAPI называется ;-)
>

Да мое имя Сергей. И фамилия моя тоже птичья. Но увы. :-(


 
Инс ©   (2007-10-02 13:29) [16]


> Германн ©   (02.10.07 13:17) [15]

Блин, ну и загадками же Вы говорите! :) Не сразу понял...


 
Германн ©   (2007-10-02 13:45) [17]


> Инс ©   (02.10.07 13:29) [16]
>
>
> > Германн ©   (02.10.07 13:17) [15]
>
> Блин, ну и загадками же Вы говорите! :) Не сразу понял..
> .
>

А иначе жизнь была бы скучная и серая :-)


 
TStas ©   (2007-10-02 21:41) [18]

Вот я так и подумал, что не в модулях, а в project > Options... А то сначала сдуру подумал, что в файле проекта, он же тоже везде доступен. :)


 
Юрий Зотов ©   (2007-10-02 23:38) [19]

> TStas ©   (02.10.07 21:41) [18]

Наоборот, он не доступен ни в одном юните.


 
Германн ©   (2007-10-02 23:55) [20]


> TStas ©   (02.10.07 21:41) [18]
>
> Вот я так и подумал, что не в модулях, а в project > Options.
> .. А то сначала сдуру подумал, что в файле проекта, он же
> тоже везде доступен. :)
>

Имхо ноги сабжа выросли из турбо паскаля. Там чтобы объявить директиву действующую во всех юнитах программы, следовало её объявить в главном юните.



Страницы: 1 вся ветка

Текущий архив: 2007.12.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
15-1195764332
Mul
2007-11-22 23:45
2007.12.23
А есть какие-нибудь статьи у Анатолия Подгоретского?


15-1195834916
@!!ex
2007-11-23 19:21
2007.12.23
НПЦ Спектр


15-1195637042
Nucer
2007-11-21 12:24
2007.12.23
Themida


15-1195675268
Petr V. Abramov
2007-11-21 23:01
2007.12.23
Сколько "н" в слове бессмысленно.?


15-1195998290
Kostafey
2007-11-25 16:44
2007.12.23
Как сравнить директории