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

时间:2016-02-05 00:26:10

标签: delphi-2007 suppress-warnings

我正在使用Delphi 2007.我知道如何让IDE编译器抑制/忽略特定警告。

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

1 个答案:

答案 0 :(得分:2)

您使用-W-[WARNING]选项。以下示例关闭 W1036(“变量%s可能尚未初始化”)

dcc32 test.dpr -W-USE_BEFORE_DEF

我发现找出要使用的警告名称的唯一方法是在IDE中创建一个简单的控制台项目,添加将产生您要识别的警告的代码,然后设置项目 - >选项 - 编译器 - 提示和警告来抑制该警告。然后构建您的项目。显示消息窗口,转到输出选项卡, Ctrl + A 全选 Ctrl + C 到副本。

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

    program Test1;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    begin
      WriteLn('Test1');
      ReadLn;
    end.
    
  • 使用项目 - >选项 - >编译器 - >提示和警告,并关闭要抑制的警告。

  • 构建测试项目。
  • 消息窗口的输出标签中,选择全部( Ctrl + A 或使用上下文菜单)并复制到剪贴板( Ctrl + C 或通过上下文菜单)。
  • 在新的记事本窗口(或新编辑器选项卡)中,粘贴剪贴板的内容。你会发现 dcc32.exe 命令行的长块与此相似(但可能更长)(我强调强调要注意的相关部分):
  

Build build 02/05/2016 2:48:48 PM。

           

项目“E:\ Code \ Project1.dproj”(制作目标):   目标CoreCompile:        c:\ rad studio \ 5.0 \ bin \ dcc32.exe -DDEBUG; DEBUG -I“c:\ rad studio \ 5.0 \ lib”;“c:\ rad studio \ 5.0 \ Imports”; “C:\ Users \ Public \ Documents \ RAD Studio \ 5.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 ANSOHER DOZEN LINES - --no-config -W-USE_BEFORE_DEF Project1.dpr

     

构建成功。      0警告      0错误   时间流逝00:00:00.12

因此,我们已将 USE_BEFORE_DEF 识别为W1036的警告名称,以便与命令行编译器一起使用,并详细说明如何将其提供给编译器。

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