#pragma pack具体用法,举个例子。

IT民工冯老师 2009-12-07 10:48:44
同题。
...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mngzilin 2009-12-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 kouwenlong 的回复:]
http://blog.csdn.net/RadonMar/archive/2009/07/14/4346213.aspx
[/Quote]

这个不错
xiaoshun123 2009-12-07
  • 打赏
  • 举报
回复
1、用于规定内存对其的方式。
有两种:自然对齐、指定对齐。
#pragma pack(n)就是指定对齐。n指定了几个字节为单位对齐。


2、在VC++ 6.0 编译器中,可以指定对界方式,其操作方式为依次选择projetct >
setting > C/C++菜单,在struct member alignment 中指定你要的对界方式。


3、下面给你个例子:
#include <stdio.h>
#include <stdlib.h>
#pragma pack(2)//以下,以2字节对齐
typedef struct example1
{
short a;
long b;
}example1;
typedef struct example2
{
char c;
example1 struct1;
short e;
}example2;

int main(int argc, char* argv[])
{
example2 struct2;
printf("%d\n",sizeof(example1));
printf("%d\n",sizeof(example2));
printf("%d\n",(unsigned int)(&struct2.struct1) - (unsigned int)(&struct2));
getchar();
return 0;
}

结果:
6
10
2
去掉#pragma pack(2)结果:
8
16
4
mstlq 2009-12-07
  • 打赏
  • 举报
回复
#include <stdio.h>
#pragma pack(1)
typedef struct a_
{
char ch;
int i;
} A;
#pragma pack(4)
typedef struct b_
{
char ch;
int i;
} B;
int main()
{
printf("sizeof A:%d\nsizeof B:%d\n",sizeof(A),sizeof(B));
return 0;
}
deng1243 2009-12-07
  • 打赏
  • 举报
回复
#pragma pack (n),C编译器将按照n个字节对齐。
#pragma pack (),取消自定义字节对齐方式。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧