关于移植arm程序到x86遇到的struct对齐问题
2016-06-03 13:14
357 查看
简单记录:
1、
arm 32位 enum类型大小是1字节
x86 enum类型是4字节
2、
X86上
#pragma pack(push, 1)//是按1字节对齐
typedef struct
{
UCHAR ucA;//1
UCHAR ucB;//1
UCHAR ucC;//1
long laa;//4
UCHAR ucD;//1
}STTEST1;
#pragma pack(pop)//
sizeof(STTEST1):8
typedef struct
{
UCHAR ucA;//1
UCHAR ucB;//1
UCHAR ucC;//1
long laa;//4
UCHAR ucD;//1
}__attribute__((packed)) STTEST1;//9
sizeof(STTEST1):9
“__attribute__((packed))”在arm上是可以1字节对齐,即sizeof(STTEST1)=8
1、
arm 32位 enum类型大小是1字节
x86 enum类型是4字节
2、
X86上
#pragma pack(push, 1)//是按1字节对齐
typedef struct
{
UCHAR ucA;//1
UCHAR ucB;//1
UCHAR ucC;//1
long laa;//4
UCHAR ucD;//1
}STTEST1;
#pragma pack(pop)//
sizeof(STTEST1):8
typedef struct
{
UCHAR ucA;//1
UCHAR ucB;//1
UCHAR ucC;//1
long laa;//4
UCHAR ucD;//1
}__attribute__((packed)) STTEST1;//9
sizeof(STTEST1):9
“__attribute__((packed))”在arm上是可以1字节对齐,即sizeof(STTEST1)=8
相关文章推荐
- #新闻拍一拍# IBM 招聘广告要求应聘者具备至少 12 年 K8S 使用经验
- vivi下重新调整分区
- ARM Linux系统启动
- Linux及ARM Linux程序开发笔记(零基础入门篇)
- C#中struct和class的区别详解
- 要慎用mysql的enum字段的原因
- 深入剖析C++中的struct结构体字节对齐
- C++ 关于STL中sort()对struct排序的方法
- C# Struct的内存布局问题解答
- c++ 尽量不要使用#define 而是用const、enum、inline替换。
- mysql之set与enum的介绍
- 深入C++中struct与class的区别分析
- Python中模拟enum枚举类型的5种方法分享
- 浅析c与c++中struct的区别
- c++中struct使用注意事项
- 深入解析C#编程中struct所定义的结构
- 浅析内存对齐与ANSI C中struct型数据的内存布局
- php读取二进制流(C语言结构体struct数据文件)的深入解析
- 详解C++程序中定义struct结构体的方法
- 零基础入门篇之Linux及Arm-Linux程序开发笔记