Пакет не виден ошибка - PullRequest
       10

Пакет не виден ошибка

3 голосов
/ 05 февраля 2011

У меня проблемы с видимостью посылки. У меня действительно простой пакет, а код указан ниже. Сообщение об ошибке показано здесь:

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?

Ответы [ 2 ]

4 голосов
/ 05 февраля 2011

Код тела пакета, как указано, имеет синтаксическую ошибку: ложное «с» в «использовании с Ada.Integer_Text_IO;» пункт.

Исправив это, я получаю ошибки компиляции, связанные с невозможностью разрешить File_Type , Открыть и Закрыть . Добавление «с» и «использование» Ada.Text_IO дает мне чистую компиляцию.

Итак, начало тела пакета выглядит так:

with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
with Ada.Strings; use Ada.Strings;
with Ada.Text_IO; use Ada.Text_IO;

package body Viterbi is
   ...

Если после исправления этих ошибок вы по-прежнему получаете сообщение об ошибке «не удается найти Integer_Text_IO», то я бы с подозрением отнесся к вашей среде разработки, т. Е. Все ли правильно установлено?

2 голосов
/ 09 февраля 2011

Вы можете избежать ошибки «использовать с», как уже указывалось, используя разделенный запятыми стиль: С - тестирование, Ada.Integer_Text_IO, Ada.Strings;

Use
-- Testing,
Ada.Strings,
Ada.Integer_Text_IO;

это также позволяет вам закомментировать определенный пакет 'withs' или 'usues', как показано.

...