您可以使用以下$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。并且使用inline
意味着编译器不会发出任何代码,因为没有函数调用。