天天看點

#pragma pack(push,1)與#pragma pack(1)的差別

這是給編譯器用的參數設定,有關結構體位元組對齊方式設定, #pragma pack是指定資料在記憶體中的對齊方式。

#pragma pack (n)             作用:C編譯器将按照n個位元組對齊。

#pragma pack ()               作用:取消自定義位元組對齊方式。

#pragma  pack (push,1)     作用:是指把原來對齊方式設定壓棧,并設新的對齊方式設定為一個位元組對齊

#pragma pack(pop)            作用:恢複對齊狀态

是以可見,加入push和pop可以使對齊恢複到原來狀态,而不是編譯器預設,可以說後者更優,但是很多時候兩者差别不大

如:

#pragma pack(push) //儲存對齊狀态

#pragma pack(4)//設定為4位元組對齊

  相當于 #pragma  pack (push,4)  

#pragma  pack (1)           作用:調整結構體的邊界對齊,讓其以一個位元組對齊;<使結構體按1位元組方式對齊>

#pragma  pack ()

例如:

#pragma pack(1)

繼續閱讀