我可以在一个单元中定义条件并在其他单元中使用它们吗?

时间:2013-03-15 21:30:05

标签: delphi delphi-xe2 conditional-compilation delphi-units

我正在一个大型单位工作,单位变得如此之大,以至于我决定将它分成3个单位。假设这些单位名称为MainCommonObjectsMain单元使用其他两个单元,Objects单元也使用Common单元。所有3个单元中的代码都需要参考这些条件。

问题是,无论我定义这些条件的3个单位中的哪个,其他2个单位都看不到它们。我当然不想在所有3个单元中复制它们。我也不想在项目中定义它们,因为这些单元将被多个项目使用,在这种情况下,使用它的所有项目都不应该关心条件。

我能否以所有3个单位都能看到它们的方式定义这些条件,而不在项目中定义它们?

1 个答案:

答案 0 :(得分:8)

对于条件定义,唯一的选择是将它们放在.inc文件中,然后将其包含在所有三个单元中。

但是,条件定义和$IFDEF不是实现条件编译的唯一方法。您可以考虑使用布尔常量而不是条件。只要它在所有三个单元中都可见,您就可以使用$IF而不是$IFDEF

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

或者,从XE3开始,您可以使用{$IF}终止{$ENDIF}

我个人倾向于在尝试有条件地编译并且不希望条件具有全局范围时支持后一种方法。