关于字节对齐的问题
typedef struct
{
unsigned char first;
unsigned char len;
unsigned char cmd;
unsigned char seq[2];
} ctl_head_t;
我希望它占5个字节,可以实际却是8个字节。
编译器:arm-elf-gcc
2.95.3
该如何办?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
标准的gcc当然是支持的,我想我应该下载一个比较新的编译器,我的版本太低了
只是有时候编译器不支持这个而已,并非无用!
你用标准gcc试试,肯定有效的!
__attribute__((packed))基本上大多数gcc都支持,即使是精简的嵌入式编译环境也可以。
至于楼上有一位谈到了为什么要用这种缺乏移植性的小技巧,我想实际工作当中什么样的情况都可能碰到,做嵌入式有时候是要牺牲移植性的,至于原因就多种多样了。但有一条,并非我们不知道这样做移植性不好。
:em11:
[ 本帖最后由 Jobs.AE@ 于 2006-8-17 10:09 编辑 ]
我记得只这个就可以
__attribute__ ((aligned(pack)))
没办法,我也不想如此,实属无奈...
#prama pack之流,编译出来还是4字节对齐...
为什么都想搞这种没有移植性的小技巧?
搞定了,thanks
每个结构都加上__attribute__ ((aligned(pack)))
然后编译指定-fpack-struct参数
[ 本帖最后由 cjaizss 于 2006-8-16 19:56 编辑 ]
我都试过了,除了最后一种(我只需要这一个结构按照1字节对齐),但是还是不行...
复制代码
或者:
复制代码
又或者:
复制代码
:em11: