在Delphi中有没有C# #if(DEBUG)编译器指令的等价物?
发布于 2008-09-29 06:38:20
使用以下命令:
{$IFDEF DEBUG}
...
{$ENDIF}发布于 2008-09-29 07:54:10
除了lassevk所说的之外,您还可以使用一些其他的编译器求值方法(我相信从Delphi 6开始):
{$IF NOT DECLARED(SOME_SYMBOL)}
// Mind you : The NOT above is optional
{$ELSE}
{$IFEND}要检查编译器是否具有此功能,请使用:
{$IFDEF CONDITIONALEXPRESSIONS}这有几种用途。
例如,您可以从Delphi帮助中检查RTL的版本:
您可以在$IF表达式中使用RTLVersion来测试独立于编译器版本级别的运行时库版本级别。
示例:{$IF RTLVersion >= 16.2} ... {$IFEND}
此外,也可以从代码中检查编译器版本本身:
编译系统单元时,编译器会为
CompilerVersion赋值。它指示编译器功能/语言语法的修订级别,它可以独立于RTLVersion而提高。可以在$IF表达式中测试CompilerVersion,并且应该使用它来代替测试VERxxx条件定义。始终测试大于或小于已知的修订级别。测试特定的修订级别不是一个好主意。
我经常做的另一件事是在还没有定义的时候定义一个符号(为了向前兼容很好),如下所示:
{$IF NOT DECLARED(UTF8String)}
type
UTF8String = type AnsiString;
{$IFEND} 希望这能有所帮助!
发布于 2009-10-15 14:06:27
如果应用程序在集成开发环境调试器下运行,则设置DebugHook。与编译器指令不同,但仍然非常有用。例如:
ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugginghttps://stackoverflow.com/questions/147719
复制相似问题