1

我想在程序的标题中显示程序是如何编译的。最重要的是,我想显示编译器优化是否打开/关闭。

(范围检查和其他类似的东西也会很有趣,但主要是我对编译器优化感兴趣)。

知道怎么做吗?


基于 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;
4

1 回答 1

6
ShowMessage(' Optimization is ' +
{$IfOpt O+}
'enabled'
{$Else}
'disabled'
{$EndIf}
);

PS。文档... Going Google for "Delphi IfOpt" 会给你带来很多链接,包括

聚苯乙烯。gammatester绝对正确,“由于 {$O+} 具有本地范围,您的消息/标题仅反映该特定源代码位置的优化状态”

于 2013-10-31T13:46:40.113 回答