在 Delphi 中,您可以使用编译器指令来禁用特定的警告,例如
{$WARN USE_BEFORE_DEF OFF}
但是当我试图用一个特定的提示来做这件事时,我从帮助文件中得到了它的 underscore_style_name,编译器说它不知道 {$HINT} 是什么。那么有没有办法做到这一点?
在 Delphi 中,您可以使用编译器指令来禁用特定的警告,例如
{$WARN USE_BEFORE_DEF OFF}
但是当我试图用一个特定的提示来做这件事时,我从帮助文件中得到了它的 underscore_style_name,编译器说它不知道 {$HINT} 是什么。那么有没有办法做到这一点?
没有具体的提示,但您可以将它们全部禁用。
{$HINTS OFF}
procedure MyProc;
var
i : integer;
begin
DoSomething;
end;
{$HINTS ON}
小题外话:您应该注意编译器的提示和警告。他们不只是为了好玩。编译器只是说“程序的工作方式可能与您认为的不同,因为您的源代码不准确”。
为了安全起见,人们想做这样的事情:
function TopazGetText(const _s: string): string;
begin
{$IFOPT <something>+}
{$DEFINE HINTS_WERE_ON}
{$HINTS OFF}
{$ELSE}
{$UNDEF HINTS_WERE_ON}
{$ENDIF}
Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
{$IFDEF HINTS_WERE_ON}
{$HINTS ON}
{$ENDIF}
end;
不幸的是,似乎没有用于检查提示是否关闭的编译器指令,所以你不能这样做。(H+ 不是用于提示,而是用于长字符串)。此外,HINTS OFF / ON 在函数/过程中不起作用。
因此,您最终会无条件地为整个功能关闭和打开提示:
{$HINTS OFF}
function TopazGetText(const _s: string): string;
begin
Result := dzDGetText(_s, TOPAZ_TRANSLATION_DOMAIN);
end;
{$HINTS ON}
(编译器曾经告诉我它不能内联 dzDGetText,在这种情况下我不关心,我不想看到提示,因为这会阻止我(和我的同事)关心重要提示.)
我能想到的最好的方法是用条件定义围绕提示的主题,并在可能需要或可能不需要的代码周围使用相同的条件定义,如下所示:
如果你有这个:
procedure MyProc;
var
i : integer;
begin
DoSomething;
//SomethingWith_i_IsCommentedOut;
end;
您将得到: 提示:变量“i”已声明但从未使用过
所以试试这个:
procedure MyProc;
{$IFDEF USE_THE_I_PROCEDURE}
var
i : integer;
{$ENDIF}
begin
DoSomething;
{$IFDEF USE_THE_I_PROCEDURE}
SomethingWith_i_IsCommentedOut;
{$ENDIF}
end;
现在您可以打开或关闭定义,而且您永远不会得到提示。