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

Jer*_*dge 7 delphi conditional-compilation delphi-units delphi-xe2

我在一个大型单位工作,单位变得如此之大,我决定将它分成3个单位.比方说,这些单位名称Main,CommonObjects.该Main装置使用其他两个装置,该Objects装置也使用该Common装置.所有3个单元中都有代码需要参考这些条件.

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

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

Dav*_*nan 8

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

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

{$IF MyConstant}
  ....
{$IFEND}
Run Code Online (Sandbox Code Playgroud)

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

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