1. 程式人生 > >#pragma pack 引起的資料錯亂

#pragma pack 引起的資料錯亂

    最近做RTP流推送專案,準備在別人的基礎上進行大改,全部採用在jrtplib庫原始碼基礎上實現,發現對jrtplib很多資料成員的修改都失效,比如呼叫 SetMaximumPacketSize函式修改成員變數maxpacksize為1400,呼叫函式後發現maxpacksize變為很大的數如35345234523444,反反覆覆除錯發現修改不成功,最後發現在rtp包含標頭檔案前有個包含自定義的標頭檔案,而在自定義的標頭檔案裡面有  #pragma pack(1) 語句,用以定義RTP頭取消對齊,而在定義完成後沒有寫 #pragma pack(pop) 取消,導致後面所有包含rtp標頭檔案均取消對齊,所以引起賦值失效。

正確的使用方式:

#pragma pack(push)   #pragma pack(1)

...

#pragma pack(pop)