作者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