#pragma pack學習

最近調試網絡的服務端程序,自己寫了一個小客戶端程序來測試,發現服務程序解包錯誤。經調試發現客戶端的協議頭大小和服務器端的協議頭大小不一致。原因是服務器端加了#pragma pack(1),而客戶端沒加。之前沒接觸過這個編譯宏,現在來認真學習之。首先google之~~,原來#pragma pack有幾種形式,我所接觸到的是#pragma pack(n),即變量以n字節對齊。
變量對齊在每個系統中是不一樣的,默認的對齊方式能有效的提高cpu取指取數的速度,但是可能會浪費一定的空間。在網絡程序中採用#pragma pack(1),即變量緊縮,不但可以減少網絡流量,還可以兼容各種系統,不會因爲系統對齊方式不同而導致解包錯誤。瞭解了概念和優點,現在我們就來測試之~,詳細參照:#pragma pack學習

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章