簡體   English   中英

Ada記錄表示

[英]Ada record representation

我的記錄類型如下:

type Rec_T is record
   a : Bit_12_T;
   b : Bit_4_T;
end record;

其中Bit_12_T is mod 2**12Bit_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM