如何在不修改该单元的情况下禁用给定单元的警告?

时间:2011-07-04 14:01:21

标签: delphi delphi-2009 compiler-warnings

所以我在我的单位包括一些其他单位,在建立申请后,我收到了来自这些单位的大量警告。金额太大,以至于我在列表中找到自己的警告时遇到了问题。 ; - )

是否有一些编译器指令允许我关闭这些警告?但请注意,我不想以任何方式修改这些单位。我想实现这样的目标:

unit MyUnit;

interface

uses
  UnitA, {$WARN EMIT_WARNNIGS OFF} UnitB, {$WARN EMIT_WARNNIGS ON} UnitC, UnitD.

implementation

uses
  UnitE, {$WARN EMIT_WARNNIGS OFF} UnitF, UnitG, {$WARN EMIT_WARNNIGS ON} UnitH.

这是一个虚构的编译器指令,我想拥有它,或者它存在但我不知道它?

感谢您的时间。

3 个答案:

答案 0 :(得分:7)

有一个编译器指令可以关闭警告,但这只能在项目选项中设置,在这种情况下它适用于所有单位,或者在单位本身中,在这种情况下它仅适用于该单位。

所以,你有几个选择。

完全符合您要求的不切实际的选项:

因此,唯一的解决方案是禁用项目中的警告,然后使用该指令在所有单位中启用它们。

最简单,最现实的选择:

编译单位一次,仅通过从库路径中删除源来使用DCU。如果您不想编辑它们,这是最简单的。

您仍然可以在浏览路径中添加它们,这与库路径不同。在这种情况下,使用DCU,但Delphi仍然可以找到源,因此您仍然可以在调试时导航它们。

小优势是构建项目的速度也更快,因为不需要在每次构建时重新编译这些单元。

最佳选择:

完全停止使用这些装置。有这么多警告的单位是劣质软件,可能会导致严重问题。

其他解决方案:

  • 保留不修改单位的意愿,并将编译器指令添加到这些单位
  • 解决警告

答案 1 :(得分:2)

不,我不相信有这样的指示。

我发现实现这一目标的唯一方法是

  • 编译所有内容
  • 将有问题的单位的dcu放在编译器会找到它的地方
  • 确保在该dcu的源之前找到dcu,或确保编译器找不到源

这将确保不会编译过滤,因此您不会被违规单位的警告所淹没。

当我不希望调试器进入它们时,这是我经常使用库单元(我们总是从源代码编译)的方法。我编译了发布配置(debug = off),然后选择了我不想介入的单元的dcu,并确保编译器在相应的pas文件之前找到它们。

一个警告:确保当你(需要)处理有问题的单位时,dcu会被移除,否则你会陷入很多困惑。 GExperts的“清理目录”可以帮助解决这个问题。

答案 2 :(得分:2)

我使用的是Delphi 7,这就是我的工作方式......

不要在项目.dpr中包含单位或者这不起作用,在项目选项的搜索路径上添加单元的文件夹。

然后在您使用它的每个单元中,使用这些编译器指令:

  uses
    {$WARNINGS OFF}{$HINTS OFF}
    TheUnitHere;
    {$WARNINGS ON}{$HINTS ON}