有没有办法从包含文件中获取当前单位的名称?

Mas*_*ler 5 delphi include compiler-warnings

我正在将一些代码从一个框架库移植到另一个框架库,这需要我注释掉大部分代码才能使其编译,然后仔细恢复它们.与此同时,由于所有已注释掉的代码,我收到了大量警告.所以我决定写一个快速包含文件来压制它们:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code'}
{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}
Run Code Online (Sandbox Code Playgroud)

我把它包括在给我大量警告的所有单元中,但是现在当我编译时,编译器返回如下消息:

[DCC警告] unfinished.inc(1):W1054对带有注释掉代码的未移植单元的警告被禁止

我想告诉我,警告来自执行包含的单位,而不是包含文件本身.有没有办法做到这一点,或者将单元的名称用于消息,而不是实际将$ MESSAGE指令移出include文件并进入我执行此操作的每个单元?

Nin*_*rry 14

这是一个技巧,它使用"未使用的私有方法"的编译器提示包含单元名称的事实,即使在包含文件中声明具有私有方法的类,也会声明该类.

这要求包含文件的include-directive出现在允许声明的单元的一部分中,因此要么在接口部分中的uses子句之后,要么在实现部分的uses子句之后.

interface

uses Foo, Bar, Socks;

{$include Unfinished.inc}
Run Code Online (Sandbox Code Playgroud)

您的包含文件应如下所示:

{$MESSAGE WARN 'Warnings suppressed for unported unit with commented-out code, Unit name see next line'}
type
  TUnit_With_Suppressed_Warnings = class
  private
    procedure UnitWithSuppressedWarnings; virtual; abstract;
  end;

{$WARN NO_RETVAL OFF}
{$WARN USE_BEFORE_DEF OFF}
Run Code Online (Sandbox Code Playgroud)

现在,您将为包含该包含文件的每个单元获取以下两条消息:

[DCC警告] unfinished.inc(1):W1054对带有注释掉代码的未移植单元的警告被抑制,单元名称见下一行
[DCC提示] actualunitname.pas(5):声明了私有符号UnitWithSuppressedWarnings但从未使用过.

请注意,实际单位的名称显示在第二行.

备注:如果编译器提示已关闭,您将看不到第二行.