今天遇到個超級奇葩的問題
好不容易把服務端和客戶端的通信弄明白了 然後下發數據到客戶端
調試跟進 發現數據是OK的 然後顯示 坑來了 顯示的數據完全錯誤
繼續F12,問題在這
BYTE res = *(BYTE *)protocol->data;
result->kill = res;
有什麼問題呢 res的值是4 複製給result->m_kill,然後這個kill的值也變成了4
但是 當我把這個變量拿來用的時候發現 它會自動變成512,天吶,這尼瑪撞鬼了嗎?
然後我再用一個全局變量來獲取res的值 發現不會變
於是確定是result這個對象,然而這個對象就是一個自定義的數據類,裏面只有賦值操作。並且kill這個變量也是整形
那就奇怪了啊,到底什麼問題呢?
最後問師父 ,師父告訴我,他在做字節對齊的時候忘了還原。。。也就是#pragma pack(1) 這句後面沒有加上#pragma pack()
天吶。。。。具體字節對齊會造成這種情況的原因, 各位自己去百度下 哈哈 繼續代碼。