Ада, проверь мою посылку. (Ожидается единица компиляции?)

Я избавился от всех остальных ошибок времени компиляции, кроме «ожидаемого модуля компиляции», который запускается сразу после моих операторов импорта. Полагаю, мне нужно создать пакет? И если да, то как мне это сделать? У меня есть несколько функций, которые находятся в одном файле .ADB.

РЕДАКТИРОВАТЬ: Итак, я попробовал ...

Посмотрите мой пакет:

-- Import Statements
with Ada.Text_Io;
use Ada.Text_Io;

package body MyPackage is

-- Declarations
-- Functions

end MyPackage;

Но gcc кричит, когда видит MyPackage:

a_.adb:27:18: loop or block statement must follow label
a_.adb:27:18: reserved word "array" cannot be used as identifier
a_.adb:28:01: declarations must come before "begin"

Maximus graCimuS


person Old McStopher    schedule 16.12.2010    source источник
comment
Этих ошибок компилятора не было до того, как код был заключен в пакет.   -  person Old McStopher    schedule 16.12.2010
comment
Эти сообщения компилятора не могут принадлежать опубликованному вами коду (потому что в нем нет 28 строк). И GCC ожидает, что этот код будет в файле mypackage.adb; и потребует наличия спецификации пакета в mypackage.ads.   -  person Simon Wright    schedule 16.12.2010
comment
В самом деле, я снял его. И спасибо за предложение по спецификации пакета в .ads. Это может быть уловка, поэтому не стесняйтесь превращать этот комментарий в ответ.   -  person Old McStopher    schedule 17.12.2010


Ответы (2)


Эти сообщения компилятора не могут принадлежать опубликованному вами коду (потому что в нем нет 28 строк).

В любом случае GCC ожидает, что этот код будет в файле mypackage.adb; и потребует наличия спецификации пакета в mypackage.ads.

person Simon Wright    schedule 16.12.2010
comment
Это важно отметить. Реализация Ada в gcc делает довольно необычный шаг, заставляя имена файлов соответствовать именам идентификаторов содержимого файлов. В частности, если файл содержит тело пакета или подпрограмму с именем fnord, тогда файл должен (в любом случае по умолчанию) иметь имя fnord.adb. Если он содержит спецификацию пакета с именем fnord, тогда файл должен называться fnord.ads. Это причуда реализации gnat Ada в gcc, а не компиляторов Ada в целом. - person T.E.D.; 22.12.2010

Тело пакета - это реализация спецификации пакета.

Без обид, но вам нужно ознакомиться с некоторыми базовыми концепциями программирования на Ada.

Можно начать с Учебника ловеласа, это старое, но полезное.

person Marc C    schedule 16.12.2010