[英]Ada record representation
我的記錄類型如下:
type Rec_T is record
a : Bit_12_T;
b : Bit_4_T;
end record;
其中Bit_12_T is mod 2**12
而Bit_4_T is mod 2**4
。
為了告訴編譯器此記錄的精確對齊,我使用了for use record
語句。 但是,我想在字節之間分割a
字段,所以我嘗試如下操作:
for Rec_T use record
a at 0 range 0 .. 7; -- The 1st byte
a at 1 range 0 .. 3; -- The 2nd byte
b at 1 range 4 .. 7;
end record;
顯然,這不是做到這一點的方法,因為編譯器抱怨“以前在第...行給出了component子句”。
問題:是否可以在字節之間拆分組件,該怎么做? 如果不可能,我是否應該使用a_high和a_low,然后使用一些位運算將它們合並在一起?
將位置視為位數組,而不是字節序列。 因此,這應該工作:
for Rec_T use record
a at 0 range 0 .. 11; -- bits 0..7 of the 1st byte and bits 0..3 of the 2nd byte
b at 0 range 12 .. 15; -- bits 4..7 of the second byte
end record;
for Rec_T'Size use 16;
有關更多信息,請參見此處的文檔 ,尤其是頁面末尾的示例,它顯示了類似的情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.