Ada抱怨我在泛型类型的函数调用中添加了一个volatile对象,而不是volatile对象

Ada抱怨我在泛型类型的函数调用中添加了一个volatile对象,而不是volatile对象,ada,spark-ada,Ada,Spark Ada,所以我有以下声明: record String1 : String (1 .. 64); String2 : String (1 .. 64); Timestamp : Time; Int1 : Long_Long_Integer; String3 : Unbounded_String; end record; 它被用于 package My_Vectors is new Vect

所以我有以下声明:

      record
         String1 : String (1 .. 64);
         String2 : String (1 .. 64);
         Timestamp : Time;
         Int1 : Long_Long_Integer;
         String3 : Unbounded_String;
      end record;
它被用于

package My_Vectors is new Vectors (Index_Type => Positive, Element_Type => Object);
这会产生编译错误: 易失性对象不能在调用SPARK RM 7.1.310中充当实际对象

现在,使用的时钟是不稳定的。然而,我已经取消了对时钟的调用,仍然得到了相同的结果

此外,我还尝试用整数类型替换对象类型,Ada编译器对此没有任何抱怨。有人能解释一下吗,因为我看不出这是如何将一个易失性对象放入一个实际的anywhere中的

刚刚尝试使用以下记录,我得到了相同的结果:

type My_Record is
      record
         A: Integer;
         B: Integer;
         C: String(1 .. 64);
      end record;

SPARK see中不支持标准Ada容器。 使用SPARK兼容容器Ada.Containers.Formal_Vectors,另请参见和


关于编译器错误:Ada.Containers.Vector的当前实现使用原子操作来提高性能,请参见和。在这种情况下,这些原子操作对System.atomic_Counters.atomic_Unsigned类型的变量进行操作。请参阅。此类型声明为原子类型,因此不稳定。请参阅。

SPARK中不支持标准Ada容器。请参阅。 使用SPARK兼容容器Ada.Containers.Formal_Vectors,另请参见和


关于编译器错误:Ada.Containers.Vector的当前实现使用原子操作来提高性能,请参见和。在这种情况下,这些原子操作对System.atomic_Counters.atomic_Unsigned类型的变量进行操作。请参阅。此类型被声明为原子类型,因此不稳定。请参见。

我不是Spark专家,但无界字符串在这里看起来有问题—它是一种访问类型!:您可以使用有界字符串或带String1..discriminant的已鉴别记录吗?谢谢;正如您所评论的,我正在尝试,但没有帮助。我不是Spark专家,但无界字符串看起来有问题,这是一种访问类型!:您可以使用有界字符串或带String1..discriminant的已鉴别记录吗?谢谢;正如你所说的那样,我试过了,但没有帮助。