![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Общий доступ к условным операторам в проектах на Delphi и PascalDelphi , Компоненты и Классы , МодулиВ процессе разработки крупного проекта на Delphi или Pascal может возникнуть необходимость использовать условные операторы (conditional defines) в нескольких единицах (units). Однако, по мере роста проекта, может потребоваться разделить большие единицы на более мелкие, чтобы упростить управление кодом и улучшить читаемость. В этом случае может возникнуть проблема доступа к условным операторам из разных единиц. Рассмотрим ситуацию, когда у нас есть три единицы: «Main», «Common» и «Objects». Единица «Main» использует обе другие единицы, а единица «Objects» также использует единицу «Common». В каждом из этих блоков есть код, который ссылается на условные операторы. Проблема заключается в том, что независимо от того, в какой из трех единиц мы определим эти условные операторы, другие две единицы не будут их видеть. Копирование их во все три единицы не является идеальным решением, так как усложняет код и делает его менее управляемым. Также нежелательно определять их в файле проекта, так как эти единицы будут использоваться в нескольких проектах, и все проекты, использующие их, не должны заботиться об условных операторах. Так можно ли определить эти условные операторы таким образом, чтобы все три единицы видели их, не определяя их в проекте? Ответ заключается в том, что единственным вариантом для условных операторов является размещение их в файле .inc и последующее включение во все три единицы. Однако, условные операторы и директива «$IFDEF» не единственный способ достичь условной компиляции. Вы можете рассмотреть возможность использования булевой константы вместо условного оператора. При условии, что она видима во всех трех единицах, вы можете использовать директиву «$IF» вместо «$IFDEF». {$IF MyConstant} .... {$IFEND} Или, начиная с XE3, вы можете завершить «{$IF)» с «{$ENDIF». Лично я склонен использовать последний подход, когда пытаюсь компилировать условно и не хочу, чтобы условие имело глобальныйscope. Примечание: Если вы хотите исключить условные операторы из своего кода, вы можете использовать подход «без условных операторов», за исключением случаев, когда требуется обеспечить совместимость с более старыми версиями вашего программного обеспечения. В данном контексте рассматривается проблема доступа к условным операторам (conditional defines) из нескольких единиц (units) в проекте на Delphi или Pascal, а также способы ее решения, такие как размещение условных операторов в файле .inc или использовани Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |