是否可以一次为多个指令定义{$ IFDEF}?

Mar*_*ner 42 delphi conditional-compilation logical-operators

是否可以在一个{$ IFDEF}指令中定义多个条件?
我想有这样的语法:

{$IFDEF Condition1 OR Condition2} DoSomething; {$ENDIF}
{$IFDEF Condition1 AND Condition2} DoSomethingElse; {$ENDIF}
Run Code Online (Sandbox Code Playgroud)

谢谢

Dav*_*nan 57

您需要使用$IF:

{$IF Defined(Condition1) or Defined(Condition2)}
DoSomething;
{$IFEND}
Run Code Online (Sandbox Code Playgroud)

  • @MartinReiner,也是总裁,总干事和高级门卫;-) (2认同)
  • @ user539484其实你是对的! (2认同)

gab*_*abr 20

如果你必须支持旧的Delphis(没有支持$ IF元数据),你可以使用一个简单而丑陋的解决方法:

//AND
{$IFDEF Cond1}{$IFDEF Cond2}DoSomething{$ENDIF}{$ENDIF} 

//OR
{$UNDEF Cond1OrCond2}
{$IFDEF Cond1}{$DEFINE Cond1OrCond2}{$ENDIF}
{$IFDEF Cond2}{$DEFINE Cond1OrCond2}{$ENDIF}
{$IFDEF Cond1OrCond2}DoSomething{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

如果您不止一次重复测试,应首先重写第一种情况,如下所示.

{$UNDEF Cond1AndCond2}
{$IFDEF Cond1}{$IFDEF Cond2}{$DEFINE Cond1AndCond2{$ENDIF}{$ENDIF} 

{$IFDEF Cond1AndCond2}DoSomething{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

  • 在这方面,旧的delphis是D5和更老的IIRC (5认同)

Pre*_*ias 6

嘿试试这个来自embarcadero.com

begin
  ...
 {$IF Defined(MY_DEFINE) and (LibVersion > 2.0) }
  Writeln(1);
 {$ELSE}
  Writeln(2);  

  ... 
  {$IFEND}
 end;
Run Code Online (Sandbox Code Playgroud)