Linux 莫名其妙;信息“;关于使用Ada的包体要求的信息?

Linux 莫名其妙;信息“;关于使用Ada的包体要求的信息?,linux,compiler-warnings,ada,ada2012,Linux,Compiler Warnings,Ada,Ada2012,在开发二维码生成器的早期阶段,我遇到了GNAT 7.4.0(在“Ubuntu 19.04”系统上运行)发出的一条奇特的“信息”信息 我使用了一些相当激进的编译开关: gnatmake -gnata -gnateE -gnateF -gnatf -gnato -gnatv -gnatVa -gnaty -gnatwe -gnatw.e main.adb 我的代码没有错误,但是这条信息表明我没有为包“qr_符号”提供主体 qr_symbol.ads 这是我不明白的信息输出 程序输出(给定正确的输入

在开发二维码生成器的早期阶段,我遇到了GNAT 7.4.0(在“Ubuntu 19.04”系统上运行)发出的一条奇特的“信息”信息

我使用了一些相当激进的编译开关:

gnatmake -gnata -gnateE -gnateF -gnatf -gnato -gnatv -gnatVa -gnaty -gnatwe -gnatw.e main.adb
我的代码没有错误,但是这条信息表明我没有为包“qr_符号”提供主体

qr_symbol.ads

这是我不明白的信息输出

程序输出(给定正确的输入,不给出正确的输出)

问题:
为什么会有一条信息提示我需要为此程序包提供一个正文,而我显然已经这样做了?

信息不是用来建议您更改程序的,只是用来提供一些(有用或不有用的)信息。在你的情况下,信息是真实的。如果没有实现,就会变成一个错误

您可能需要检查此标志是否导致生成此消息:

根据:

-啃 `激活每个可选警告。”

此开关激活所有可选警告,包括-gnatwa未激活的警告。不允许使用此开关 建议正常使用。如果你把这个开关打开,它就快坏了 你肯定会收到大量无用的警告。这个 从-gnatwa中排除的警告通常高度敏感 专用警告,仅适用于具有 根据专门的编码规则进行了专门设计

如果您不想删除该开关,至少可以禁用此特定信息消息:

-啃

`禁用有关包规范需要正文的原因的信息消息。'

此开关抑制显示包规范为什么需要正文的信息消息的输出


您是对的,原因是
-gnatw.e
。没有这个开关,程序就可以干净地构建。非常感谢。
with QR_Versions; use QR_Versions;

generic
   Ver : QR_Version;
package QR_Symbol is
   procedure Export_As_SVG;
private
   type Module_State is (
     Uncommitted,
     One,
     Zero
     );

   type Module_Family is (
     Uncommitted,
     Finder,
     Separator,
     Alignment,
     Timing,
     Format_Spec,
     Version_Spec,
     Data_Codeword,
     EC_Codeword,
     Padding
     );

   type Module is
      record
         State : Module_State := Uncommitted;
         Family : Module_Family := Uncommitted;
      end record;

   type Module_Matrix is array (
     Positive range <>,
     Positive range <>
     ) of Module;

end QR_Symbol;
with Ada.Text_IO; use Ada.Text_IO;

package body QR_Symbol is
   Version : constant QR_Version := Ver; --  Ver is a formal generic parameter
   Side_Length : constant Positive := 17 + (Positive (Ver) * 4);
   Matrix : Module_Matrix (1 .. Side_Length, 1 .. Side_Length);

   procedure Export_As_SVG is
   begin
      Put_Line ("in Export_As_SVG()...");
      Put_Line ("  Version: " & Version'Image);
      Put_Line ("  Side_Length: " & Side_Length'Image);

      --  Matrix (1, 1).State := One;
      Put_Line ("  Matrix (1, 1).State: " & Matrix (1, 1).State'Image);

   end Export_As_SVG;
end QR_Symbol;
GNAT 7.4.0
Copyright 1992-2017, Free Software Foundation, Inc.

Compiling: qr_symbol.adb
Source file time stamp: 2019-12-07 16:29:37
Compiled at: 2019-12-07 16:29:38

==============Error messages for source file: qr_symbol.ads
     9.    procedure Export_As_SVG;
                     |
        >>> info: "QR_Symbol" requires body ("Export_As_SVG" requires completion)

 29 lines: No errors, 1 info message
aarch64-linux-gnu-gnatbind-7 -x main.ali
aarch64-linux-gnu-gnatlink-7 main.ali
$ ./main '' V1
QR Version requested: V 1
in Export_As_SVG()...
  Version:  1
  Side_Length:  21
  Matrix (1, 1).State: UNCOMMITTED