17

在 Delphi 中,您可以使用编译器指令来禁用特定的警告,例如

{$WARN USE_BEFORE_DEF OFF}

但是当我试图用一个特定的提示来做这件事时,我从帮助文件中得到了它的 underscore_style_name,编译器说它不知道 {$HINT} 是什么。那么有没有办法做到这一点?

4

4 回答 4

31

没有具体的提示,但您可以将它们全部禁用。

{$HINTS OFF}
procedure MyProc;
var
  i : integer;
begin
  DoSomething;
end;
{$HINTS ON}
于 2009-01-14T20:42:52.243 回答
8

小题外话:您应该注意编译器的提示和警告。他们不只是为了好玩。编译器只是说“程序的工作方式可能与您认为的不同,因为您的源代码不准确”。

于 2009-01-14T22:03:53.143 回答
6

为了安全起见,人们想做这样的事情:

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,在这种情况下我不关心,我不想看到提示,因为这会阻止我(和我的同事)关心重要提示.)

于 2011-08-10T07:44:16.340 回答
4

我能想到的最好的方法是用条件定义围绕提示的主题,并在可能需要或可能不需要的代码周围使用相同的条件定义,如下所示:

如果你有这个:

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;

现在您可以打开或关闭定义,而且您永远不会得到提示。

于 2009-01-14T20:07:36.573 回答