gpt4 book ai didi

concurrency - Ada 对象 "Train"不能在声明结束前使用

转载 作者:行者123 更新时间:2023-12-02 08:14:19 24 4
gpt4 key购买 nike

这段代码有什么问题?编译器说了两件事,没有 Run 条目,Run accept 与条目不匹配(两者似乎都是错误的),另外,Train 不能在声明之前使用(但它已经声明)。请向我解释发生了什么。

我对显示完整代码犹豫不决,但可以这样做。

type ItineraryType is array (0..255) of Integer;
type Train is record
Label : Integer;
Capacity : Integer;
Maxspeed : Integer;
Starts : Integer;
Itinerary : ItineraryType;
Stops : Integer;
lock : access Mutex;
end record;

task type TrainThread is
entry Run (train1:Train);
end;
task body TrainThread is
train : Train;
begin
accept Run (train1:Train) do
train := train1;
end;
end;

-- part of main
train1 := new TrainThread;
train1.Run(trains(i));

main.adb:51:05: warning: no accept for entry "Run"
main.adb:52:17: object "Train" cannot be used before end of its declaration
main.adb:54:09: no entry declaration matches accept statement
gnatmake: "main.adb" compilation error

最佳答案

Ada 不区分大小写,所以 trainTrain 是等价的。所以声明 train : Train 总是无效的。 (不可否认,在这种情况下,gnat 的信息可能会更好)

关于concurrency - Ada 对象 "Train"不能在声明结束前使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43384624/

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