Ima*_*man 0 ada parameterized task
我需要在 Ada 中创建一个参数化任务,我得到的错误是:判别式必须具有离散或访问类型。
这是我的代码:
task type FEP_Con(Port_Num : Port_Name) is
entry Start;
end FEP_Con;
type FEP_Con_acc is access FEP_Con;
task body FEP_Con is
S_Port : Serial_Port;
Buffer : Ada.Streams.Stream_Element_Array(1..1024);
Last : Ada.Streams.Stream_Element_Offset;
Response_Str : Unbounded_String;
--cPort : Port_Name := "";
begin
accept Start;
Run Code Online (Sandbox Code Playgroud)
提前致谢。
虽然没有提供“Port_Name”的类型定义,但根据判别名称,我认为它是一个固定长度的字符串或 Unbounded_String 或类似的。两者都不是离散类型或访问类型。
离散类型是“整数类型或由其值的枚举(枚举类型)定义”。RM 3.2[3]
的接入类型是一个“指针”类型。
因此,对于您的任务判别器,您可以使用一些基于整数的类型——这并不一定意味着从 Integer 派生或子类型化,而只是一个计数整数类型,例如 type Port_Name_IDs is range 1 .. 100;
或者您可以将 Port_Names 定义为枚举,例如:
type Port_Name is (Haifa, Amsterdam, Long_Beach);
Run Code Online (Sandbox Code Playgroud)
或者定义一个引用您现有 Port_Name 类型的访问类型,例如:
type Port_Name_Ref is access Port_Name;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
900 次 |
| 最近记录: |