【问题标题】:Is it possible to define {$IFDEF} for more than one directive at once?是否可以一次为多个指令定义 {$IFDEF} ?
【发布时间】:2012-02-02 05:36:09
【问题描述】:

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

{$IFDEF Condition1 OR Condition2} DoSomething; {$ENDIF}
{$IFDEF Condition1 AND Condition2} DoSomethingElse; {$ENDIF}

谢谢

【问题讨论】:

    标签: delphi logical-operators conditional-compilation


    【解决方案1】:

    您需要改用$IF

    {$IF Defined(Condition1) or Defined(Condition2)}
    DoSomething;
    {$IFEND}
    

    【讨论】:

    • 谢谢,这正是我所需要的。我猜您不仅是首席开发人员,还是您公司的构建经理,不是吗?
    • @MartinReiner,同时也是总裁、总干事和高级看门人;-)
    【解决方案2】:

    如果您必须支持旧的 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}
    

    如果你多次重复测试,第一种情况应该改写如下。

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

    【讨论】:

    • 在这种情况下旧的 delphis 是 D5 和旧的 IIRC
    【解决方案3】:

    嘿,试试这个embarcadero.com

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2015-02-17
      • 2012-11-10
      • 2019-10-02
      • 1970-01-01
      • 2010-10-06
      相关资源
      最近更新 更多