#pragma pack (n)你了解?

问题:

做嵌入式的有时候会在代码中遇到

#pragma pack (n)
struct naturalalign
{
char a;
int b;
char c;
};
#pragma pack ()

说明:

①使用伪指令#pragma pack (n),编译器将按照 n 个字节对齐
②使用伪指令#pragma pack (),取消自定义字节对齐方式。
③注意: 如果#pragma pack (n)中指定的 n 大于结构体中最大成员的 size,则其不起作用,结构体仍然按照 size 最大的成员进行对界。

小小的测试

struct  structA{
	int a;
	char b;
};

struct structB{
	char a;
	short b;
};

struct structC{
	int a;
	char b;
	float c;
};

#pragma pack(2)
struct structD{
	
	char a;
	char c;
	int b;
};
#pragma pack()


#pragma pack(2)
struct structE{
	char a;
	int b;
	char c;
};
#pragma pack()

void main(void)
{
    printf("sizeof(float):%d\n",sizeof(float));
	printf("struct A:%d\n",sizeof(struct structA));
	printf("struct B:%d\n",sizeof(struct structB));
	printf("struct C:%d\n",sizeof(struct structC));
	printf("struct D:%d\n",sizeof(struct structD));
	printf("struct E:%d\n",sizeof(struct structE));
}

在KEIL平台得到的答案
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值