gpt4 book ai didi

compilation - 艾达 "Compilation Unit Expected"错误

转载 作者:行者123 更新时间:2023-12-04 03:30:48 24 4
gpt4 key购买 nike

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

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

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

每当我尝试编译它时,都会收到“预期的编译单元”错误。如果我删除类型声明,我将不再收到错误,但我显然需要它,如果我将它放在文件中的其他任何位置,我会收到错误。我对 Ada 有点陌生,所以我不完全确定这里发生了什么。

最佳答案

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;

如果您已经有一个程序调用 proceed但希望它在一个单独的文件中,你需要一个包。然后创建两个文件 - 一个规范文件 (.ads) 和一个正文文件 (.adb):

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

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

my_package.adb:
package body My_Package is

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

end My_Package;

然后你可以像往常一样使用 with My_Package 包含这个包(和可能的 use )

关于compilation - 艾达 "Compilation Unit Expected"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632126/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com