2015-11-13 38 views
0

我的問題是這樣的。解析/複製指針/數組結構與分號位字段約束

我的處理器對於數據類型的最小寬度爲16位。

但是我有一些應該是8位寬的結構。這是我嘗試移植的一些遺留代碼,因此這些結構將從某些數組或指向數據的指針中解析出來。

當使用分號指針來分析變量時,是否允許我將信息分析限制爲8位?

UPDATE:實施例

struct CANMDL_BYTES {  // bits description 
    Uint16  BYTE3:8;  // 31:24 
    Uint16  BYTE2:8;  // 23:16 
    Uint16  BYTE1:8;  // 15:8 
    Uint16  BYTE0:8;  // 7:0 
}; 

如果我試圖鑄造陣列到這個結構,將它正確地投?考慮到我的數組使用所有位而不管數據類型如何

+1

真的不清楚你在說什麼。請顯示一些代碼,以更好地闡明你的意思。 – kaylum

回答

1

我假設當你說你需要一個8位寬的結構時,你指的是位域。

在這種情況下,可以有一個8位的位字段結構如:

struct My8BitStruct 
{ 
    uint8_t SomeField : 3; 
    uint8_t AnotherField : 5; 
}; 

這個結構將具有sizeof(My8BitStruct) == 1其是8位。該結構包含兩個字段,一個3位字段和一個5位字段。

但請注意,製作一個未使用本地int類型的位域不是標準C.但是您會發現大多數編譯器都支持此擴展。

+0

好的,這是我正在尋找的答案。謝謝。雖然這意味着我已經浪費了很長時間來做一些其他愚蠢的方法。 – CJC