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

Wod*_*dzu 6 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.
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的时间.

Gol*_*rol 7

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

所以,你有几个选择.

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

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

最简单,最现实的选择:

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

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

小优势是构建项目也更快,因为这些单元不需要在每个构建上重新编译.

最佳选择:

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

其他方案:

  • 不管怎样,不要修改单元并将编译器指令添加到这些单元中
  • 解决警告

  • 为了"放下你的愿望......"+1,因为这就是我在面对这个问题时所做的.修改第三方源时最重要的问题是您以后可能会遇到升级问题,但单个`{$ WARNINGS OFF}`不会产生任何问题,因为它不会影响设备中的实际代码. (3认同)