我想在程序的标题中显示程序是如何编译的。最重要的是,我想显示编译器优化是否打开/关闭。
(范围检查和其他类似的东西也会很有趣,但主要是我对编译器优化感兴趣)。
知道怎么做吗?
基于 Arioch 答案的即用型功能:
function CompilerOptimization: Boolean; { Importan note: $O+ has a local scope, therefore, the result of the function reflects only the optimization state at that specific source code location. }
begin
{$IfOpt O+}
Result:= TRUE;
{$Else}
Result:= FALSE;
{$EndIf}
end;
function CompilerOptimizationS: String;
begin
Result:= 'Compiler optimization is ' +
{$IfOpt O+}
'enabled'
{$Else}
'disabled'
{$EndIf}
end;
重要提示:如果您使用 {$O} 开关来优化代码片段,那么它必须用作这样的子函数,否则,如果您仅使用全局开关(在项目选项中),它可以用作普通(声明)函数。
// {$O+} or {$O-}
procedure TFrmTest.FormCreate(Sender: TObject);
function CompilerOptimizationS: String;
begin
Result:= 'Compiler optimization is ' +
{$IfOpt O+}
'enabled'
{$Else}
'disabled'
{$EndIf}
end;
begin
///...more code here
Caption:= 'Version: '+ GerVerStr+ ' '+ CompilerOptimizationS+ etc+ etc;
end;