【发布时间】:2011-05-11 09:34:30
【问题描述】:
我想在我的代码中禁用特定警告 (W1035),因为我认为编译器对此警告有误:
function TfrmNagScreen.Run: TOption;
begin
if ShowModal = mrOk then
Result := TOption(rdgAction.EditValue)
else
Abort
end;
结果不可能是未定义的,因为Abort 会抛出EAbort。
我试过了:
-
{$WARN 1035 Off}:显然这只适用于某些特定错误(请参阅Documentation) -
{$W-1035}: 什么都不做
我知道我可以在项目选项中全局关闭警告,或者使用{$WARNINGS OFF},但这不是这里的意图。
编辑:我现在已将其作为#89744 进行了QC。
【问题讨论】:
-
虽然编译器有时会感到困惑并无缘无故地报告此警告,但在这种情况下,编译器在技术上是正确的。结果不在条件之前分配,仅在条件的真实分支上分配。如果条件为假,函数过早返回这一事实与编译器无关。
-
@codeelgance:非常正确,但我认为
Abort是一个内置函数,编译器可以识别这种情况。
标签: delphi delphi-2007 suppress-warnings compiler-directives