如何暂时禁用"返回值可能未定义"警告?

Jen*_*off 12 delphi compiler-directives delphi-2007 suppress-warnings

我想在我的代码中禁用特定警告(W1035),因为我认为编译器对此警告是错误的:

function TfrmNagScreen.Run: TOption;
begin
  if ShowModal = mrOk then
    Result := TOption(rdgAction.EditValue)
  else
    Abort
end;
Run Code Online (Sandbox Code Playgroud)

因为Abort投掷,结果不可能是未定义的EAbort.

我试过了:

  • {$WARN 1035 Off}:显然这仅适用于某些特定错误(请参阅文档)
  • {$W-1035}:什么都不做

我知道我可以在项目选项中全局关闭警告,或使用{$WARNINGS OFF},但这不是这里的意图.

编辑:我现在已经将QC作为#89744了.

RRU*_*RUZ 13

您无法全局禁用此警告,但您可以使用此选项{$WARN NO_RETVAL OFF}在本地禁用警告.

{$WARN NO_RETVAL OFF}
function TfrmNagScreen.Run: TOption;
begin
  if ShowModal = mrOk then
    Result := TOption(rdgAction.EditValue)
  else
    Abort
end;
{$WARN NO_RETVAL ON}
Run Code Online (Sandbox Code Playgroud)

  • 在编辑单元时按Ctrl-OO,然后查看编辑器窗口的顶部.:-) (3认同)

Wil*_*Cau 9

我目前没有可用的Delphi编译器,但重新安排代码以删除if..else可能会使警告消失:

function TfrmNagScreen.Run: TOption;
begin
  if ShowModal <> mrOk then
    Abort;

  Result := TOption(rdgAction.EditValue);
end;
Run Code Online (Sandbox Code Playgroud)

另请参见如何在Delphi中禁用有关"返回值...可能未定义"的警告?.