如何确定结构体中成员的个数?如何确定结构体中的字节数

[复制链接]
4346|5
 楼主| ARM白痴 发表于 2008-6-25 13:55 | 显示全部楼层 |阅读模式
typedef struct
{
  unsigned char a;
  unsigned char b;
  unsigned char c;
  unsigned int  d;
  unsigned char e;  
} Data_TypeA 

typedef struct
{
  Data_TypeA aa;
  Data_TypeA bb;
  Data_TypeA cc;
  Data_TypeA dd;
  Data_TypeA ee;  
} Data_TypeB 

如何确定Data_TypeA的字节数?
如何确定Data_TypeB的成员个数?
dld2 发表于 2008-6-25 13:56 | 显示全部楼层
ayb_ice 发表于 2008-6-25 14:19 | 显示全部楼层
随波逐流 发表于 2008-6-25 21:35 | 显示全部楼层

建议把unsigned int d 放到结构体的头 再用sizeof

wlsui 发表于 2008-6-25 22:10 | 显示全部楼层

很麻烦的一个问题

如果按楼主的方法,一般的编译器都会为了内存对齐而插入一些空白字节(这就是为什么4楼会那样建议),但有些编译器是否这样做是可设置的,也就是说,楼主的结构体占用的字节数有可能会因编译器的设置不同而不同.
不过一般编译器都支持对元素按顺序进行排放,而不产生空白字节,如用__packed关键字.
随波逐流 发表于 2008-6-25 22:22 | 显示全部楼层

LS的__packed 对所有编译器都有用吗 被sizeof坑坏了

您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

119

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部