我想在私有部分中定义的包的公共部分(原始名称已弃用)中重命名常量。我试过这个,但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;
答案 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;