Могу ли я определить условные обозначения в единице и использовать их в других единицах?
Я работаю над большим блоком, блок стал настолько большим, что я решил разделить его на 3 блока. Скажем, эти названия единиц Main
, Common
, а также Objects
, Main
блок использует как два других блока, так и Objects
Блок также использует Common
Блок. Во всех трех единицах есть код, который должен ссылаться на эти условия.
Проблема в том, что независимо от того, в каком из трех блоков я определяю эти условные выражения, остальные два не видят их. Я, конечно, не хочу копировать их во всех трех единицах. Я также не хочу определять их в проекте, потому что эти блоки будут использоваться несколькими проектами, и в этом случае все проекты, использующие это, не должны заботиться об условных выражениях.
Могу ли я определить эти условия так, чтобы все 3 модуля увидели их, не определяя их в проекте?
1 ответ
Единственный вариант для условных определений - поместить их в файл.inc, который вы затем включите во все три блока.
Тем не менее, условный определяет, и $IFDEF
не единственный способ добиться условной компиляции. Вы можете рассмотреть возможность использования логической константы вместо условной. Пока это видно во всех трех единицах, вы можете использовать $IF
скорее, чем $IFDEF
,
{$IF MyConstant}
....
{$IFEND}
Или, начиная с XE3, вы можете прекратить {$IF}
с {$ENDIF}
,
Лично я склоняюсь к этому последнему подходу, когда пытаюсь скомпилировать условно, и не хочу, чтобы условие имело глобальную область видимости.