是否有Delphi等效的C##if(DEBUG)编译器指令?
用这个:
{$IFDEF DEBUG} ... {$ENDIF}
除了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}
希望这可以帮助!
如果应用程序在IDE调试器下运行,则设置DebugHook.与编译器指令不同但仍然非常有用.例如:
ReportMemoryLeaksOnShutdown := DebugHook <> 0; // show memory leaks when debugging