首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi #IF(DEBUG)等价?

Delphi #IF(DEBUG)等价?
EN

Stack Overflow用户
提问于 2008-09-29 06:34:49
回答 4查看 21.5K关注 0票数 22

在Delphi中有没有C# #if(DEBUG)编译器指令的等价物?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-09-29 06:38:20

使用以下命令:

代码语言:javascript
复制
{$IFDEF DEBUG}
...
{$ENDIF}
票数 33
EN

Stack Overflow用户

发布于 2008-09-29 07:54:10

除了lassevk所说的之外,您还可以使用一些其他的编译器求值方法(我相信从Delphi 6开始):

代码语言:javascript
复制
{$IF NOT DECLARED(SOME_SYMBOL)} 
  // Mind you : The NOT above is optional
{$ELSE}
{$IFEND}

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

代码语言:javascript
复制
 {$IFDEF CONDITIONALEXPRESSIONS}

这有几种用途。

例如,您可以从Delphi帮助中检查RTL的版本:

您可以在$IF表达式中使用RTLVersion来测试独立于编译器版本级别的运行时库版本级别。

示例:{$IF RTLVersion >= 16.2} ... {$IFEND}

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

编译系统单元时,编译器会为

CompilerVersion赋值。它指示编译器功能/语言语法的修订级别,它可以独立于RTLVersion而提高。可以在$IF表达式中测试CompilerVersion,并且应该使用它来代替测试VERxxx条件定义。始终测试大于或小于已知的修订级别。测试特定的修订级别不是一个好主意。

我经常做的另一件事是在还没有定义的时候定义一个符号(为了向前兼容很好),如下所示:

代码语言:javascript
复制
 {$IF NOT DECLARED(UTF8String)}
 type
   UTF8String = type AnsiString;
 {$IFEND} 

希望这能有所帮助!

票数 8
EN

Stack Overflow用户

发布于 2009-10-15 14:06:27

如果应用程序在集成开发环境调试器下运行,则设置DebugHook。与编译器指令不同,但仍然非常有用。例如:

代码语言:javascript
复制
ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/147719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档