結構體對齊原則在自定義協議解析時的妙用之法

2021-10-08 11:21:54 字數 487 閱讀 4039

關於結構體對齊的設定,以gcc 32bit編譯為例,我們可以來看看下面這個例子:

#include //預設情況下,結構體一般在記憶體中的自動對齊格式是4個位元組 

//結構體設定手動對齊 

//如果這裡是4,那麼下面的列印就是8     

//如果這裡是2,那麼下面的列印就是6    

//如果這裡是1,那麼下面的列印就是5 

struct mystu

;#pragma pack(4)

struct mystu0

;#pragma pack()

#pragma pack(2)

struct mystu1

;#pragma pack()

#pragma pack(1)

struct mystu2

;#pragma pack() 

int main(void)

執行結果:

自定義結構體封裝

使用nsvalue如下方法進行裝箱 nsvalue valuewithbytes const void value objctype const char type 呼叫下面的方法進行拆箱 void getvalue void value main.m foundationframework cre...

自定義型別 結構體

struct tag 結構體型別名稱 variable list 結構體變數 省略結構體型別名稱 匿名結構體型別 當省略掉結構體型別名稱時,就不能省略掉結構體變數,這樣是不合理的,所以一般我們不建議省略結構體型別名 struct x,y 全域性變數 struct a 20 p int main 注意...

自定義型別 結構體(1)

結構體與陣列的區別 陣列的元素可以通過下標訪問,這是因為,陣列的長度相同。但是,結構體每乙個成員的長度都可能不同,所以不能通過下標來訪問它們,但是,結構體的每個成員都有自己的名字,結構體是通過名字來訪問的。結構體宣告結構體是一些值的集合,這些值稱為它的成員,乙個結構體的各個成員具有不同的型別。str...