Ada 使用所有默认值初始化记录类型的常量变量

Ada 使用所有默认值初始化记录类型的常量变量,ada,Ada,说我有一个类型 type Record_T is record VAR1 : integer := 1; VAR2 : string := ""; end record; 如果要初始化此类型的常量变量,可以通过以下几种方式进行初始化: Null_Record : constant Record_T := (1, ""); Null_Record : constant Record_T := Record_T'(1, ""); 但这迫使我指定默认值,而我之

说我有一个类型

type Record_T is
   record
      VAR1 : integer := 1;
      VAR2 : string  := "";
   end record;
如果要初始化此类型的常量变量,可以通过以下几种方式进行初始化:

Null_Record : constant Record_T := (1, "");
Null_Record : constant Record_T := Record_T'(1, "");
但这迫使我指定默认值,而我之前已经指定了它们

我尝试了以下所有方法,但均无效

Null_Record : constant Record_T := ();
Null_Record : constant Record_T := Record_T'();
Null_Record : constant Record_T;

但一定有办法做到这一点?至少,如果Ada缺少这种功能,我会感到非常惊讶。

在Ada 2005中,使用
操作符为聚合使用新的“默认值初始化”,这似乎是可能的

这看起来像

Null_Record : constant Record_T := (others => <>);
Null\u记录:常量记录\u T:=(其他=>);

在2005年《美国残疾人法案》之前,我看不出有什么办法可以做到这一点。不幸的是,对于我来说,这不是一个解决方案,因为我一直坚持使用Ada 95。

ISO/IEC 8652:2007之前的典型方法,假设您的类型在包中,是在可见部分声明一个延迟常量:

Null_Record : constant Record_T;
然后在私人部分用以下内容完成:

Null_Var    : Record_T;
Null_Record : constant Record_T := Null_Var;

有点罗嗦,但它完成了任务。非常感谢!这可能是公认的答案。