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

Posted

技术标签:

【中文标题】是否可以一次为多个指令定义 $IFDEF ?【英文标题】: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

谢谢

【问题讨论】:

【参考方案1】:

您需要改用$IF

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

【讨论】:

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

如果您必须支持旧的 Delphis(不支持 $IF 元指令),您可以使用一种简单而丑陋的解决方法:

//AND
$IFDEF Cond1$IFDEF Cond2DoSomething$ENDIF$ENDIF 

//OR
$UNDEF Cond1OrCond2
$IFDEF Cond1$DEFINE Cond1OrCond2$ENDIF
$IFDEF Cond2$DEFINE Cond1OrCond2$ENDIF
$IFDEF Cond1OrCond2DoSomething$ENDIF

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

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

$IFDEF Cond1AndCond2DoSomething$ENDIF

【讨论】:

在这种情况下旧的 delphis 是 D5 和旧的 IIRC【参考方案3】:

嘿,试试这个embarcadero.com

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

  ... 
  $IFEND
 end;

【讨论】:

以上是关于是否可以一次为多个指令定义 $IFDEF ?的主要内容,如果未能解决你的问题,请参考以下文章

CPP 指令 #ifdef 正则表达式解决方案

有 C++ 标准库 ifdef 或 ifndef 预处理器指令吗?

VUE之自定义指令

第二节:指令的使用——自定义指令

Python 初级 6 循环

#ifdef _CH_ 预处理器指令在 C 中做了啥?