如何让命令行 Delphi-2007 编译器忽略或抑制特定警告

How do I get the command line Delphi-2007 compiler to ignore or suppress a particular warning

我正在使用 Delphi 2007。我知道如何让 IDE 编译器收到 suppress/ignore 特定警告。

但是如何让命令行编译器执行此操作?

您使用 -W-[WARNING] 选项。以下示例关闭 W1036 ("Variable %s might not have been initialized"):

dcc32 test.dpr -W-USE_BEFORE_DEF

我发现要使用的警告名称的唯一方法是在 IDE 中创建一个简单的控制台项目,添加将产生您要识别的警告的代码,然后设置Project->Options-Compiler-Hints and Warnings 以抑制该警告。然后构建你的项目。显示消息window,转到输出选项卡,Ctrl+ASelect全部, Ctrl+C复制.

  • 创建一个新的控制台应用程序。

    program Test1;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    begin
      WriteLn('Test1');
      ReadLn;
    end.
    
  • 使用 Project->Options->Compiler`->Hints and Warnings,然后关闭您要抑制的警告。

  • 构建您的测试项目。
  • 输出 选项卡中 消息 window, select 所有 ( Ctrl+A 或使用上下文菜单)并复制到剪贴板(Ctrl+C 或通过上下文菜单)。
  • 在新的记事本 window(或新的编辑器选项卡)中,粘贴剪贴板的内容。你会发现一大段 dcc32.exe 命令行与此类似(但可能长得多)(我 强调 相关部分需注意):

Build started 02/05/2016 2:48:48 PM.


Project "E:\Code\Project1.dproj" (Make target(s)): Target CoreCompile: c:\rad studio.0\bin\dcc32.exe -DDEBUG;DEBUG -I"c:\rad studio.0\lib";"c:\rad studio.0\Imports";"C:\Users\Public\Documents\RAD Studio.0\Dcp";E:\Code\FastMM4;E:\madCollection\madBasic\BDS4;E:\madCollection\madDisAsm\BDS4;E:\madCollection\madExcept\BDS4;"E:\Code\Virtual Treeview\Source";E:\code\Indy10_5294\Lib\Core;E:\code\Indy10_5294\Lib\System;E:\code\Indy10_5294\Lib\Protocols; --SNIPPED ANOTHER DOZEN LINES-- --no-config -W-USE_BEFORE_DEF Project1.dpr

Build succeeded. 0 Warning(s) 0 Error(s) Time Elapsed 00:00:00.12

因此,作为这一切的结果,我们确定了 USE_BEFORE_DEF 作为 W1036 的警告名称,用于命令行编译器,以及图示具体如何将其提供给编译器。

当然,您可以禁用多个警告以识别它们;为了简单起见,我只使用了一个,并删除了很多生成的命令行输出。