我正在爲包含兩個用於請求和響應的c結構的項目編寫通信協議。根據設備的設置方式,數據傳輸可以是請求(主模塊)或響應(從模塊)。使用變量鑄造C結構
結構非常接近。最大的區別是請求的結構與響應的結構。
我有保持上述指針被定義爲
unsigned int MBData;
MBData = gCommResponse;
當引用的代碼中的全局變量的變量,我要麼必須
((MBResponse*)MBData)->Address = someData;
或
((MBResponse*))MBData)->Address = someData;
這代碼是成功的,但希望通信功能更模糊。
我想要做的是使用指向MBRequest或MBResponse的指針來投射MBData。
unsigned int MBStruct;
MBStruct = &MBResponse;
((MBStruct*)MBData)->Address = someData; // Something like this
這是可能的C編程?
謝謝。
**不要將'int'投射到指針上,反之亦然** – Olaf
@Olaf:你是什麼意思?我有一個變量,將保存C結構的內存位置。我分配了c結構的地址並將其用作我的演員的一部分。我不是試圖做'u16 * ptr =(int)12;' – user3826668
'MBStruct'是一個'unsigned int',你指定一個指針。這顯然是錯誤的!如果您不知道如何正確使用指針,請先閱讀C書。這在C中是**重要的知識。正確的做法是使它成爲'MBResonse'類型的指針。使用'void *'應該是最後一次重新編譯並且很合理。 – Olaf