考虑以下测试用例:
{ CompilerVersion = 21 }
procedure Global();
procedure Local();
begin
end;
type
TProcedure = procedure ();
var
Proc: TProcedure;
begin
Proc := Local; { E2094 Local procedure/function 'Local' assigned to procedure variable }
end;
在第 13 行,编译器发出 ERROR 级别的消息,禁止所有此类本地过程使用的情况。“官方”解决方案是将Local
符号提升到外部范围(即:使其成为 的兄弟Global
),这将对代码“结构化”产生负面影响。
我正在寻找以最优雅的方式规避它的方法,最好是让编译器发出警告级别的消息。