使用Ada.Text\u IO.Integer\u IO

使用Ada.Text\u IO.Integer\u IO,ada,Ada,我正在尝试编写以下程序: with Ada.Text_IO; procedure Main is type T is range 0 .. 18; package IO is new Ada.Text_IO.Integer_IO (T); begin IO.Put (1); end Main; 但当我尝试编译时,会收到以下错误消息: 据我在手册的一节中了解,Integer\u IO是一个通用包,需要用带符号的整数进行实例化。我还尝试了子类型T是整数或正,但我得到了相

我正在尝试编写以下程序:

with Ada.Text_IO;

procedure Main is

   type T is range 0 .. 18;
   package IO is new Ada.Text_IO.Integer_IO (T);

begin

   IO.Put (1);

end Main;
但当我尝试编译时,会收到以下错误消息:

据我在手册的一节中了解,
Integer\u IO
是一个通用包,需要用带符号的整数进行实例化。我还尝试了
子类型T是整数
,但我得到了相同的错误


我做错了什么?

似乎您在编译器开关“-gnatyL”提供的样式检查中设置了不适当的最大嵌套级别,然后设置编译器,通过“-gnatwe”开关将所有警告和样式检查视为错误。

您的编译器安装中可能有问题。我可以使用
gnatmake main.adb
毫无问题地构建您的代码。您是否在命令行或任何IDE中使用gnatmake

无论如何,我会向你推荐以下几点

您可以使用包“Ada.Integer\u Text\u IO”,例如:

现在可以调用:
put(1)


这可能是放置整数最舒适的方式

您的程序编译和运行正确;由于您的系统似乎正在编译
Ada.Text\u IO.Integer\u IO
,因此可能存在安装问题。
main.adb:6:04: info: in instantiation at a-tiinio.ads:51
main.adb:6:04: info: "IO" requires body ("Get" requires completion)
main.adb:6:04: info: in instantiation at a-tiinio.ads:56
main.adb:6:04: info: "IO" requires body ("Get" requires completion)
main.adb:6:04: info: in instantiation at a-tiinio.ads:60
main.adb:6:04: info: "IO" requires body ("Put" requires completion)
main.adb:6:04: info: in instantiation at a-tiinio.ads:66
main.adb:6:04: info: "IO" requires body ("Put" requires completion)
main.adb:6:04: info: in instantiation at a-tiinio.ads:71
main.adb:6:04: info: "IO" requires body ("Get" requires completion)
main.adb:6:04: info: in instantiation at a-tiinio.ads:76
main.adb:6:04: info: "IO" requires body ("Put" requires completion)
a-tiinio.adb:59:07: (style) maximum nesting level exceeded
a-tiinio.adb:79:07: (style) maximum nesting level exceeded
a-tiinio.adb:100:07: (style) maximum nesting level exceeded
a-tiinio.adb:121:07: (style) maximum nesting level exceeded
a-tiinio.adb:134:07: (style) maximum nesting level exceeded
a-tiinio.adb:147:07: (style) maximum nesting level exceeded
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;