bit-fields

    4熱度

    1回答

    我一直在閱讀關於C中的位字段,C標準如何不強制機器字中字段的任何特定排序,等等。 我希望這個問題適合SO的格式。 我的問題是我的結構(定義如下)是否會按我期望的方式執行。這是我想出了定義,然後我將討論什麼,我想: typedef enum { STATE_ONE, STATE_TWO, STATE_THREE, STATE_FOUR } __attribu

    11熱度

    2回答

    我正在爲二進制格式編寫解析器。這種二進制格式涉及不同的表格,這些表格又是二進制格式,通常包含不同的字段大小(大約在50-100之間)。 大多數這些結構將有位域和時C表示看起來像這些: struct myHeader { unsigned char fieldA : 3 unsigned char fieldB : 2; unsigned char fieldC :

    4熱度

    4回答

    我需要處理以下形式的一些數據: typedef struct{ unsigned n1 : 12; unsigned n2 : 12; unsigned n3 : 12; unsigned n4 : 1; unsigned n5 : 35; } data; 我確信,在他們總共數到9個字節。 但它們不會。將該結構的9個字節寫入文件並將其讀回並不

    8熱度

    1回答

    我想知道是否有一個GCC C編譯指令,允許我確定一個結構打包的位順序?東西的喜歡: #pragma bit_order left 這種需要的理由是,我有以下結構: struct { union { unsigned char BYTE; struct { unsigned char B0: 1; unsigned char

    7熱度

    3回答

    我正在接收來自硬件的幾個位字段。 我的代碼最初是: public readonly byte LowByte; public bool Timer { get { return (LowByte & 1) == 1; } } 然後我想起這些標誌枚舉,並正在考慮將其更改爲: [Flags] public enum LowByteReasonValues : byte { Tim

    1熱度

    2回答

    我的問題是如何通過引用一個函數來傳遞位域實例。我已經執行了如下所示,但是當我發送函數DAC_set_gain_code時,處理器會引發中斷錯誤。只要傳遞位域,我所做的是正確的? 我創建了一個位域(見下面),它代表了DAC芯片上的一個24位寄存器,我想寫入並存儲在.h文件中。 typedef struct { uint8_t rdwr_u8: 1; uint8_t not_us

    2熱度

    2回答

    我把一些代碼ASM到C++,ASM的只是看起來像這樣: mov dword ptr miscStruct, eax 的結構是這樣的: struct miscStruct_s { uLong brandID : 8, chunks : 8, //etc } miscStruct; 有一種簡單的一兩行方式來填充C++中的結構? 到目前爲止,我使用: mis

    1熱度

    1回答

    我正在學習微控制器,我很難理解如何使用聯合來設置gpio端口上的各個位。 typedef union _BYTE { byte _byte; struct { unsigned b0:1; unsigned b1:1; unsigned b2:1; unsigned b3:1; unsigned b4:1;

    6熱度

    4回答

    有這個代碼與Windows SDK編譯: UINT cFiles = DragQueryFileW(hDrop, 0xFFFFFFFF, NULL, 0); 其中DragQueryFileW()有這樣的簽名: UINT DragQueryFileW(HDROP, UINT, LPWSTR, UINT); 和UINT在某處定義的SDK頭是這樣的: typedef unsigned int U

    7熱度

    2回答

    我有一個對象集合,並且每個對象都有一個位域枚舉屬性。我試圖得到的是整個集合中位字段屬性的邏輯或。我怎樣才能做到這一點與循環收集(希望使用LINQ和lambda代替)? 這裏是我的意思的例子: [Flags] enum Attributes{ empty = 0, attrA = 1, attrB = 2, attrC = 4, attrD = 8} class Foo { Attr