在Delphi XE2中,我有一个单元MyUnit.pas由两个不同的项目使用ProjectA and ProjectB.
MyUnit包含一个声明DoSomething;
(这是在其他单位实施的程序其他单位.pas).
现在我想用条件编译包括DoSomething
只有在ProjectA编译和not in ProjectB编译,这样可以避免ProjectB包括/编译其他单位.pas间接地。
这必须是条件编译,作为一个简单的if/else
声明显然不能达到这个目的。
如何才能实现这一目标?
您需要在一个项目中定义条件,但不需要在另一个项目中定义条件。例如,您可以定义CanUseOtherUnit
在项目 A 的项目选项中,但不在项目 B 中。
然后您需要进行以下更改MyUnit.pas
.
Put the uses
所指的子句OtherUnit
里面一个$IFDEF
:
uses
... {$IFDEF CanUseOtherUnit}, OtherUnit{$ENDIF};
然后在调用该函数的地方,再次将调用包装在一个$IFDEF
:
{$IFDEF CanUseOtherUnit}
DoSomething;
{$ENDIF}
由于项目 B 中未定义条件,因此编译器会忽略其中的代码$IFDEF
指令。
当您主动希望不使用某个单元时,搜索路径的便利性就会成为弱点。您很容易在没有意识到的情况下向程序中添加单元。当您不使用搜索路径并且被迫将源文件添加到项目(.dpr 文件)时,您不会意外地采用新的依赖项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)