在Delphi中,您可以使用编译器指令禁用特定警告,例如
{$WARN USE_BEFORE_DEF OFF}
但是当我尝试使用特定提示时,我的underscore_style_name从帮助文件中删除,编译器说它不知道{$ HINT}是什么。有没有办法做到这一点?
答案 0 :(得分:31)
没有具体的提示,但您可以全部禁用它们。
{$HINTS OFF}
procedure MyProc;
var
i : integer;
begin
DoSomething;
end;
{$HINTS ON}
答案 1 :(得分:8)
很少偏离主题:您应该注意编译器的提示和警告。它们不仅仅是为了好玩。编译器只是说“程序可能会以不同的方式工作,因为您的源代码不准确”。
答案 2 :(得分: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,这是我在这种情况下不关心的事情,我不想看到提示,因为这会阻止我(和我的同事)关心关于重要的提示。)
答案 3 :(得分: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;
现在你可以打开或关闭定义,你永远不应该得到提示。