我已经声明了一些偶尔只用于调试的方法。例如:
// For debugging purposes only
{$IFDEF DBG}
procedure SaveLUTs();
{$ENDIF}
这些方法很少使用,只有在定义DBG时才使用。如果未使用该方法,则会生成以下编译器警告:
[Hint] Hardware.pas(184): Private symbol 'SaveLUTs' declared but never used
除了注释方法声明和正文之外,有没有办法标记SaveLUTs
以便编译器不会生成警告?我仍然需要生成通常的警告,包括有关其他声明的方法或未使用的变量的警告。
使用Delphi 7,并对如何为新版本的Delphi进行此操作感兴趣。
答案 0 :(得分:4)
您可以这样标记方法:
{$Hints Off}
procedure SaveLUTs();
{$Hints On}
这将删除此过程的提示。
请注意,{$Hints ON}
将启用该单元其余部分的提示,而不管之前的$ Hints状态如何。由于{$IFOPT}
不适用于长命名的指令(至少,直到Delphi 10 Seattle ......),我不知道有什么方法可以恢复以前的状态。
答案 1 :(得分:2)
您无需禁用提示。您可以使用{$IFDEF DBG}
完成所有操作,并且只有在定义时才编译和使用符号。我经常使用这个代码来加密文件并在测试时通过电子邮件发送它,因为我不希望加密发生或者电子邮件随附件一起发送。
unit Hardware;
interface
{.$DEFINE DBG} // Remove . to include debugging code
uses
SysUtils;
// Other procedure defs
procedure DoSomething;
procedure DoAnotherThing;
{$IFDEF DBG}
procedure SaveLuts;
{$ENDIF}
implementation
{$IFDEF DBG}
procedure SaveLuts;
begin
// Code here
end;
{$ENDIF}
procedure DoSomething;
begin
// Code here
end;
procedure DoAnotherThing;
begin
// Code here
end;
end.
在您希望使用调试代码的单元中:
procedure Main;
begin
DoSomething;
{$IFDEF DBG}
SaveLuts;
{$ENDIF}
DoAnotherThing;
end;
禁用提示的问题在于,其他代码可能会在禁用它们之前以及重新启用之前潜入其中。我不喜欢把它们关掉,因为它们会导致错过我不想发生的事情。
答案 2 :(得分:0)
另一种选择是将这些方法的可见性从私有更改为受保护。如果它们不是私有的,编译器将不再抱怨。
这当然有缺点,方法不再是私密的。