嵌入式开发——#pragma pack()常见用法介绍

Posted 代二毛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式开发——#pragma pack()常见用法介绍相关的知识,希望对你有一定的参考价值。

前言

#pragma pack()是用来设置当前的对齐字节数的,C语言面试时结构体的对齐是常见考点。在嵌入式开发中,有时候是需要指定对齐字节数的,因为同样一份代码,有可能在32位的芯片里运行,也可能在64位的芯片里运行。为了保持兼容,可以用#pragma pack()来指定对齐字节,这样无论在什么环境里对齐字节数都是一样的,这样就可以避免因为对齐字节数不同导致的错误。

常见用法

#pragma pack(push)
#pragma pack(4)

此处省略n行代码

#pragma pack(pop)

解析

1.#pragma pack(push):将当前对齐字节数压栈,保存起来;
2.#pragma pack(4):指定对齐数是4字节,往后的代码都按4字节对齐;此处的4字节可以根据需求改变;
3.#pragma pack(pop):从栈里取出之前保存的对齐字节数,之后的代码还是按照以前的对齐字节数去对齐;
效果:#pragma pack(push)和#pragma pack(pop)之间的代码都会按照指定的对齐字节数对齐。

以上是关于嵌入式开发——#pragma pack()常见用法介绍的主要内容,如果未能解决你的问题,请参考以下文章

#pragma pack 定义变量的起始存放地址对齐方式

#pragma pack(push) 和#pragma pack(pop) 以及#pragma pack()

#pragma pack(push,1)与#pragma pack的区别(转)

#pragma pack (n) 设置对齐方式

#pragma pack()

GNU C字节对齐__attribute__((aligned(n))) #pragma pack(n)