2016-11-18 28 views
1

我試着寫下面的程序:使用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 IntegerPositive,但我得到了同樣的錯誤。

我在做什麼錯?

+4

您的程序編譯並正確運行;由於您的系統似乎在編譯'Ada.Text_IO.Integer_IO',您可能會遇到安裝問題。 – trashgod

回答

2

看來你設置,其中由編譯器開關「-gnatyL」提供,然後設置編譯器「-gnatwe」開關對待所有警告和風格檢查爲錯誤樣式檢查不適當的最大嵌套級別。

0

編譯器安裝可能存在問題。我可以毫無問題地使用gnatmake main.adb來構建您的代碼。你在你的命令行或任何IDE中使用gnatmake嗎?

不管怎麼說,我會建議你下面......

您可以使用包 「Ada.Integer_Text_IO」,例如:

with Ada.Integer_Text_IO; use Ada.Integer_Text_IO; 

現在,您可以撥打:put(1);

這可能是整數的最舒適的方式!