gpt4 book ai didi

delphi - 如果某些编译器选项(如优化)打开,如何在运行时检测?

转载 作者:行者123 更新时间:2023-12-03 19:08:07 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to detect in runtime if some Compiler Option (like Assertions) was set to ON?

(1 个回答)


8年前关闭。




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

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

知道怎么做吗?

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

最佳答案

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

PS。文档... Going Google for "Delphi IfOpt"会给你带来很多链接,包括
  • http://www.delphibasics.co.uk/RTL.asp?Name=$IfOpt
  • http://docwiki.embarcadero.com/RADStudio/en/IFOPT_directive_(Delphi)

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

    关于delphi - 如果某些编译器选项(如优化)打开,如何在运行时检测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19708109/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com