패키지 공개 여부에 문제가 있습니다. 나는 정말 간단한 패키지를 가지고 있고 코드는 아래에 나열되어있다. 오류 메시지가 여기에 표시됩니다 다음과 같이패키지가 보이지 않는 오류
package Viterbi is
procedure Load_N_File(
Filename : in String;
N : in out Integer;
M : in out Integer);
end Viterbi;
패키지 본문은 다음과 같습니다 : 다음과 같이
viterbi.adb:12:14: "Integer_Text_IO" is not visible (more references follow)
viterbi.adb:12:14: non-visible declaration at a-inteio.ads:18
gnatmake: "viterbi.adb" compilation error
패키지 사양이
의 원인이되는 내 패키지 몸에 어떤with Ada.Integer_Text_IO; use with Ada.Integer_Text_IO;
with Ada.Strings; use Ada.Strings;
package body Viterbi is
procedure Load_N_File(
Filename : in String;
N : in out Integer;
M : in out Integer
) is
N_File : File_Type;
begin
Open(N_File, Mode=>In_File, Name=>Filename);
Get(N_File, N);
Get(N_File, M);
Close(N_File);
end Load_N_File;
end Viterbi;
숨겨진 패키지? use 절이 Integer_Text_IO를보기에 가져 오지 않아야합니까?
많은 사람들이 저와 동의하지 않지만, 일반적으로 사람들은'use' 절없이 먼저 코드를 작성하도록 조언합니다. 완료되면 정리 단계로 넘어 가서 코드가 명확 해지면 다시 넣을 수 있습니다. 그 (것)들에 대한 문제는 당신이 당신이 당신의 머리카락을 꺼내고있는 위의 문제를 얻는 지점까지 게으르도록 허용한다는 것입니다. 왜냐하면 당신은 물건들이 실제로는 들어 있지 않은 패키지에 있다고 생각하기 때문입니다. –
사실은 매우 합리적으로 보입니다. C++을 작성할 때 맨 위에있는 모듈을 제외하고 항상 전체 범위 지정 (예 : boost :: smarter_ptr, std :: string)을 사용합니다. 나는 Ada에서 그러한 정책을 채택하는 것이 이치에 맞다고 생각합니다. –
어떤 컴파일러를 사용하고 있습니까? 나는 "viterbi.adb : 1 : 31 : reserved word"를 "식별자로 사용할 수 없다"고합니다! –