我遇到以下情况的约束错误:
从程序获取约束缓冲区:
Get_MyBuffer(data => Buffer); -- This is ok
缓冲区的类型为Unsigned_Byte。想要将其转换为Byte。
function To_Byte is new Unchecked_Conversion (Source => Unsigned_Byte,
Target => Byte);
MyFunction2Pass(To_Byte(Buffer)); -- Having warning 'uncheked conversion to unconstrained array subtype is not portable.
在MyFunction2Pass内打印
function MyFunction2Pass(Data : Byte) is
begin
New_Line(integer'image(integer(Data(1)))); -- **Shoot Constrain Error**
end
答案 0 :(得分:1)
你的一行表现非常糟糕。这没有什么不对,但是当你得到这个例外时,这暂时是不合适的。您现在可以考虑将每个例程调用拆分为自己的行,这样就可以跟踪哪个调用正在发出约束错误。
Bit : constant boolean := Data(1); -- I'm guessing this is the right type
Bit_Int : constant integer := integer(Bit);
Bit_Img : constant string := integer'image(Bit_Int);
begin
New_Line (Bit_Img);
end
现在哪一行给出了约束错误? (当然清理任何编译器错误后)。