Использование Ada.Text_IO.Integer_IO

Я пытаюсь написать следующую программу:

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;

Но когда я пытаюсь скомпилировать, я получаю следующие сообщения об ошибках:

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

Насколько я понимаю из раздела A.10.8 данного руководства, Integer_IO является универсальным пакетом, для которого нужно создать экземпляр с целым числом со знаком. Я тоже пробовал с subtype T is Integer или же Positive, но я получаю те же ошибки.

Что я делаю неправильно?

2 ответа

Решение

Кажется, вы установили недопустимый максимальный вложенный уровень в проверках стиля, которые предоставляются переключателем компилятора "-gnatyL", а затем настроили компилятор для обработки всех предупреждений и проверок стиля как ошибок переключателем "-gnatwe".

Возможно, проблема в установке вашего компилятора. Я могу построить ваш код с gnatmake main.adbбез проблем. Вы используете gnatmake в командной строке или какой-либо IDE?

В любом случае, я бы порекомендовал вам следующее...

Вы можете использовать пакет "Ada.Integer_Text_IO", например:

with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

Теперь вы можете позвонить: put(1);

Это, наверное, самый удобный способ сложения целых чисел!

Другие вопросы по тегам