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

{$WARN USE_BEFORE_DEF OFF}

但是,当我试图做一个具体的说明,其underscore_style_name我下了帮助文件,编译器说,它不知道是什么{$提示}是。那么,有没有办法做到这一点?

有帮助吗?

解决方案

没有具体的提示,但你可以禁用它们。

{$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;

现在,你可以打开定义或关闭,你永远不应该得到一个提示。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top