Ada"预期编制单位"错误

时间:2015-09-17 13:54:04

标签: compilation ada

我试图声明一个新类型,这样我就可以将一个数组作为参数传递给一个过程。它看起来像这样:

type Arr_Type is array(1..1000) of String;

procedure proceed(Arg1: in Arr_Type) is
begin
<program body>
end

每当我尝试编译它时,我会收到一个&#34;编译单元,预期&#34;错误。如果我删除类型声明,我不再得到错误,但我显然需要它,如果我把它放在文件中的任何其他位置我会收到错误。我对Ada来说有点新鲜,所以我不完全确定这里发生了什么。

1 个答案:

答案 0 :(得分:8)

Ada中的程序必须分为编译单元(程序,功能或包)。类型声明必须包含在一个单元中,以便您可以将它们包装在一个过程中:

procedure Main is

  type Arr_Type is array(1..1000) of String;

  procedure proceed(Arg1: in Arr_Type) is
  begin
   <program body>
  end proceed;

begin

   call to proceed

end Main;

如果您已经有一个程序调用{​​{1}}但希望将其放在单独的文件中,那么您需要一个程序包。然后创建两个文件 - 规范文件(.ads)和正文文件(.adb):

my_package.ads:

proceed

my_package.adb:

package My_Package is
  type Arr_Type is array(1..1000) of String;

  procedure proceed(Arg1: in Arr_Type);
end My_Package;

然后您可以像往常一样使用package body My_Package is procedure proceed(Arg1: in Arr_Type) is begin <program body> end Proceed; end My_Package; (以及可能with My_Package

包含此套餐