如何重命名在私有部分中定义的Ada常量

时间:2018-01-08 12:12:10

标签: constants private ada renaming

我想在私有部分中定义的包的公共部分(原始名称已弃用)中重命名常量。我试过这个,但GNAT说:

  

完全常量声明显得太晚了

package Sample is

  type The_Type is private;
  My_Constant : constant The_Type;

  My_Renamed_Constant : The_Type;

private

  type The_Type is ...;
  My_Constant : constant The_Type := ...;

  My_Renamed_Constant : The_Type renames My_Constant;

end Sample;

2 个答案:

答案 0 :(得分:5)

是否有理由要重命名而不是(比如)
function My_Renamed_Constant return The_Type;
它只是在包体中返回My_Constant?

功能相同......如果你担心速度,应该内联。

在弃用过程的后期,将My_Renamed_Constant设为常量,而My_Constant改为函数。然后,当您认为自己准备退休时,请function My_Constant加注Program_Error或自定义异常,指示"使用弃用常量"抓住你错过的任何用法。

答案 1 :(得分:3)

您可能不需要使用重命名;这会吗? (这可能完全取决于The_Type的完整声明是什么)

package Sample is

  type The_Type is private;
  My_Constant : constant The_Type;

  My_Renamed_Constant : constant The_Type;

private

  type The_Type is new Integer;
  My_Constant : constant The_Type := 42;

  My_Renamed_Constant : constant The_Type := My_Constant;

end Sample;