设为首页 加入收藏

TOP

struct数据对齐与#pragma pack(n)
2014-11-23 23:11:47 来源: 作者: 【 】 浏览:1
Tags:struct 数据 齐与 #pragma pack

对struct数据对齐与#pragma pack(n)的理解一直存在误区,这里做一个总结,便于以后记忆。
规则主要有两条:
1.结构,联合或者类的数据成员,第一个放在偏移为0的地方,以后每一个数据成员的对齐,按照#pragma pack指定的数值和这个数据成员的自身长度来定,取较小的那个。
2.对于整体结构的对齐,则按照结构体中最大数据成员和#pragma pack的大小来定,去较小的那个。
以下是测试代码:
Cpp代码
#include
using namespace std;
struct test
{
short a;
short b;
int c;
char d;
};
#pragma pack(4)
struct test2
{
char a;
short b;
char c;
};
#pragma pack()
struct s1
{
short a;
long b;
};
struct s2
{
char c;
s1 d;
long long e;
};
#pragma pack(4)
struct s3
{
int a;
char b;
short c;
char d;
};
struct s4
{
char a;
short b;
char c;
};
#pragma pack()
#pragma pack(2)
struct s5
{
int a;
char b;
short c;
char d;
};
#pragma pack()
int main()
{
cout< cout< cout< cout< cout< cout< cout< unsigned int ccc;
cout< }

作者“plussai”

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇获取私有变量的值 下一篇C语言实现链表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: