当前位置:  开发笔记 > 编程语言 > 正文

Delphi #IF(DEBUG)相当于?

如何解决《Delphi#IF(DEBUG)相当于?》经验,为你挑选了3个好方法。

是否有Delphi等效的C##if(DEBUG)编译器指令?



1> angry person..:

用这个:

{$IFDEF DEBUG}
...
{$ENDIF}


对于旧版本,您可以使用{$ IFOPT D +}.'D'是"使用调试信息编译"的编译器选项符号.'D +'表示如果该选项为*ON*,则只应编译后面的内容.

2> PatrickvL..:

除了lassevk所说的,你还可以使用其他一些编译器评估方法(因为我相信Delphi 6):

{$IF NOT DECLARED(SOME_SYMBOL)} 
  // Mind you : The NOT above is optional
{$ELSE}
{$IFEND}

要检查编译器是否具有此功能,请使用:

 {$IFDEF CONDITIONALEXPRESSIONS}

这有几个用途.

例如,您可以检查RTL的版本; 来自Delphi的帮助:

您可以在$ IF表达式中使用RTLVersion来独立于编译器版本级别测试运行时库版本级别.
示例:{$ IF RTLVersion> = 16.2} ... {$ IFEND}

此外,还可以从代码中检查编译器版本本身:

编译系统单元时,编译器会为CompilerVersion分配一个值.它指示编译器功能/语言语法的修订级别,它可以独立于RTLVersion而前进.CompilerVersion可以在$ IF表达式中进行测试,应该使用而不是测试VERxxx条件定义.始终测试大于或小于已知修订级别.测试特定的修订级别是个坏主意.

我经常做的另一件事是定义一个符号,当它尚未定义时(对于向前兼容性很好),如下所示:

 {$IF NOT DECLARED(UTF8String)}
 type
   UTF8String = type AnsiString;
 {$IFEND} 

希望这可以帮助!



3> Lawrence Bar..:

如果应用程序在IDE调试器下运行,则设置DebugHook.与编译器指令不同但仍然非常有用.例如:

ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有