パッケージの表示に問題があります。私は本当にシンプルなパッケージを持っており、そのコードは以下の通りです。エラーメッセージがここに示されています:パッケージが表示されないエラー
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;
私のパッケージに体を引き起こしている何隠されたままになるパッケージ? use節はInteger_Text_IOを表示するべきではありませんか?
多くの人が私に同意しませんが、私は一般的に、 'use'節なしでコードを書くようアドバイスします。それが完了し、クリーンアップ段階に入ると、コードを明確にするならば、それらを戻すことができます。それらの問題は、あなたが物事が実際には存在しないパッケージに入っていると思っているため、上記のような問題を抱えているところまで怠けてしまうことです。 –
実際は非常に合理的です。私がC++を書くとき、私はいつも一番上のモジュールを除いて完全なスコープ(すなわちboost :: smarter_ptr、std :: string)を使います。そのような政策をアダにも採用することは理にかなっていると思います。 –
どのコンパイラを使用していますか?私は "viterbi.adb:1:31:予約語"を "識別子として使うことはできません"を得ます! –