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

发布于 2024-12-24 18:33:48 字数 202 浏览 3 评论 0原文

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

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

谢谢

Is it possible to define more than one conditional in one {$IFDEF} directive ?
I would like to have syntax like this:

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

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

征﹌骨岁月お 2024-12-31 18:33:48

您需要使用 $IF 代替:

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

You would need to use $IF instead:

{$IF Defined(Condition1) or Defined(Condition2)}
DoSomething;
{$IFEND}
不奢求什么 2024-12-31 18:33:48

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

In case you have to support old Delphis (without the support for the $IF metadirective), you can use one simple and one ugly workaround:

//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}

If you are repeating the test more than once, first case should be rewritten as follows.

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

{$IFDEF Cond1AndCond2}DoSomething{$ENDIF}
自由范儿 2024-12-31 18:33:48

嘿,从 embarcadero.com 尝试一下

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

  ... 
  {$IFEND}
 end;

hey try this from the embarcadero.com

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

  ... 
  {$IFEND}
 end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文