我试图声明一个新类型,这样我就可以将一个数组作为参数传递给一个过程。它看起来像这样:
type Arr_Type is array(1..1000) of String;
procedure proceed(Arg1: in Arr_Type) is
begin
<program body>
end
每当我尝试编译它时,我会收到一个&#34;编译单元,预期&#34;错误。如果我删除类型声明,我不再得到错误,但我显然需要它,如果我把它放在文件中的任何其他位置我会收到错误。我对Ada来说有点新鲜,所以我不完全确定这里发生了什么。
答案 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
)