У меня проблемы с видимостью пакета. У меня действительно простой пакет, и код указан ниже. Сообщение об ошибке показано здесь:
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
Спецификация пакета выглядит следующим образом:
package Viterbi is
procedure Load_N_File(
Filename : in String;
N : in out Integer;
M : in out Integer);
end Viterbi;
Тело пакета выглядит следующим образом:
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;
Что в моем теле пакета заставляет пакет оставаться скрытым? Разве предложение использования не должно отображать Integer_Text_IO?
use
. Когда все будет готово и вы перейдете к фазе очистки, вы можете вернуть их обратно, если это сделает код более понятным. Проблема с ними заключается в том, что они позволяют вам быть ленивыми до такой степени, что у вас возникают проблемы, подобные приведенным выше, когда вы рвете на себе волосы, потому что думаете, что вещи находятся в упаковках, в которых их на самом деле нет. - person T.E.D.   schedule 07.02.2011