Chinaunix首页 | 论坛 | 博客
  • 博客访问: 244569
  • 博文数量: 76
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-17 21:43
文章分类
文章存档

2011年(1)

2010年(9)

2009年(20)

2008年(46)

我的朋友

分类: C/C++

2009-04-02 08:41:20

在ARM 下要使结构体按指定字节对齐,可行的方法
1.在makefile里加-fpack-struct 选项,这样的话对所有的结构按一字节对齐.
不得不说,确实有那么些质量较差的程序可能需要你部分自然对齐,部分一字 节对齐,此时
2. typedef struct pack{
}__attribute__((packed))
下面谈谈Arm,x86在gcc里关于内存边界字节对齐的区别.对于同样的结构体,在386下
#prama pack(1)
后,sizeof(pack)=1 4 2=7
而在arm下同样的操作sizeof(pack)=1 4 2 1=8,即虽然b根a之间不要填充但总的长度必须要是4的整数倍.
可利用__attribute__属性
当然最后的方式,还是自己去看ARM体系结构与gcc编译选项了。
------------------------------------------------------------------------------------------------------------
浅谈结构体对齐问题
#include
int main() {
struct ms {
double x;
char a;
int y;
};
// }__attribute__((packed));
printf("%d\n", sizeof(struct ms));
return 0;
}
linux上运行,结果为16;如果采用注释的那一行,则结果为13
 
阅读(1796) | 评论(0) | 转发(0) |
0

上一篇:打印机分辨率

下一篇:网络江湖

给主人留下些什么吧!~~