Могу ли я определить условные обозначения в единице и использовать их в других единицах?

Я работаю над большим блоком, блок стал настолько большим, что я решил разделить его на 3 блока. Скажем, эти названия единиц Main, Common, а также Objects, Main блок использует как два других блока, так и Objects Блок также использует Common Блок. Во всех трех единицах есть код, который должен ссылаться на эти условия.

Проблема в том, что независимо от того, в каком из трех блоков я определяю эти условные выражения, остальные два не видят их. Я, конечно, не хочу копировать их во всех трех единицах. Я также не хочу определять их в проекте, потому что эти блоки будут использоваться несколькими проектами, и в этом случае все проекты, использующие это, не должны заботиться об условных выражениях.

Могу ли я определить эти условия так, чтобы все 3 модуля увидели их, не определяя их в проекте?

1 ответ

Решение

Единственный вариант для условных определений - поместить их в файл.inc, который вы затем включите во все три блока.

Тем не менее, условный определяет, и $IFDEF не единственный способ добиться условной компиляции. Вы можете рассмотреть возможность использования логической константы вместо условной. Пока это видно во всех трех единицах, вы можете использовать $IF скорее, чем $IFDEF,

{$IF MyConstant}
  ....
{$IFEND}

Или, начиная с XE3, вы можете прекратить {$IF} с {$ENDIF},

Лично я склоняюсь к этому последнему подходу, когда пытаюсь скомпилировать условно, и не хочу, чтобы условие имело глобальную область видимости.

Другие вопросы по тегам