delphi – 如何在运行时检测某些编译器选项(如断言)是否设置为ON
发布时间:2020-12-15 04:15:47 所属栏目:大数据 来源:网络整理
导读:检查断言是否在Delphi中处于活动状态的条件是什么? 当代码中的断言不活动时,我希望能够做一些事情来抑制有关未使用变量的提示 procedure Whatever;var v : Integer;begin v := DoSomething; Assert(v = 0);end; 在上面的代码中,当断言未激活时,会有一个关于
检查断言是否在Delphi中处于活动状态的条件是什么?
当代码中的断言不活动时,我希望能够做一些事情来抑制有关未使用变量的提示 procedure Whatever; var v : Integer; begin v := DoSomething; Assert(v >= 0); end; 在上面的代码中,当断言未激活时,会有一个关于变量v被赋予从未使用过的值的提示. 代码位于将在各种环境中使用的库中,因此我能够专门测试断言,而不是像DEBUG那样的自定义条件. 解决方法
您可以使用
$IFOPT 指令执行此操作:
{$IFOPT C+} // this block conditionally compiled if and only if assertions are active {$ENDIF} 所以你可以像这样重写你的代码: procedure Whatever; {$IFOPT C+} var v : Integer; {$ENDIF} begin {$IFOPT C+}v := {$ENDIF}DoSomething; {$IFOPT C+}Assert(v >= 0);{$ENDIF} end; 这将抑制编译器提示,但它也会使你的眼睛流血. 我可能会像这样压制它: procedure SuppressH2077ValueAssignedToVariableNeverUsed(const X); inline; begin end; procedure Whatever; var v : Integer; begin v := DoSomething; Assert(v >= 0); SuppressH2077ValueAssignedToVariableNeverUsed(v); end; 抑制函数接收的无类型参数足以抑制H2077.并且内联的使用意味着编译器不发出代码,因为没有函数调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |