作者Mewra ()
看板C_and_CPP
標題[問題] 將struct cast成 (char *)
時間Mon Feb 23 21:57:33 2009
看了RakNet的manual上有一段可以將struct轉成 char *, 但是看不太懂.
它給了一個範例, 但不確定是不是將struct轉成 char *的必要條件. 拿
去 compile 跑出一大串 error.
#pragma pack(push, 1)
struct structName
{
unsigned char typeId; // Your type here
// Your data here
};
#pragma pack(pop)
能請高手指點一下嗎? 謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.110.117.10
1F:→ Mewra:自問自答..用以上方法就過了 02/23 22:49
2F:推 QQ29:請問樓上 這問題是什麼阿 完全看不懂他問什麼= = 02/23 22:55
3F:推 sunneo:這不是必要條件,轉型成char*跟去掉struct alignment無相關 02/23 23:31
4F:→ sunneo:去掉alignment只是可以確保offset就是你要的變數位址 02/23 23:32
5F:推 ledia:offset 不一定算得出來喔, 順序沒有一定要跟你宣告的一樣 02/23 23:51
6F:→ ledia:應該只是沒有 padding 02/23 23:51
7F:→ Mewra:我是在加了 unsigned char typeId; 後, 可以直接將struct 02/24 11:58
8F:→ Mewra:cast成(char *)並compile過,不知道是不是這個lib有做特別處 02/24 11:59
9F:→ Mewra:理過,不過拿來做封包傳送還蠻方便的 02/24 12:00
10F:→ Mewra:剛試過用g++也可以正常將struct轉成char *並提取struct中的 02/24 12:14
11F:→ Mewra:資料 02/24 12:14
12F:→ Mewra:抱歉對c++還不熟 問了些奇怪的問題 02/24 12:15