Использование 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);
Это, наверное, самый удобный способ сложения целых чисел!