历史上的今天
今天是:2025年02月07日(星期五)
2021年02月07日 | STM32 编译指令 #pragma pack 的配对使用
2021-02-07 来源:eefocus
#pragma pack 可以用来指定数据结构的成员变量的内存对齐数值。
可选值为:
1、2、4、8、16。
使用 pack 指令要配对使用,以避免意外影响项目中其他源文件的结构成员的内存对齐。
如果影响了其他源文件的结构成员内存对齐,那么在你按照默认对齐来计算那些结构成员占用内存大小或者使用指针移动计算结构成员偏移位置的时候,就可能会出现意料之外的异常。
主要可能的异常是内存定位错误或非法内存访问,结果可能导致错误的定位或数值,极端的情况下可能导致程序崩溃。
下面的例子用来展示基本的配对使用方式。
1)#pragma pack(n)的配对使用
#pragma pack(1) //内存对齐设置为1个字节
struct s1
{
int i;
char c;
bool f;
}
struct s2{...}
//...
#pragma pack() //恢复默认的内存对齐
2)#pragma pack(push|pop,n)的配对使用
#pragma pack(push,1) //内存对齐设置为1个字节
struct s3
{
int i;
char c;
bool f;
}
struct s4{...}
//...
#pragma pack(pop) //恢复默认的内存对齐
上一篇:STM32 结构体对齐规则
下一篇:STM32 启动代码分析详解
史海拾趣
|
WARNING:Xst:37 - Detected unknown constraint/property \"BLACK_BOX\". This constraint/property is not supported by the current software release and will be ignored. WARNING:Xst:1814 - Core does not contain any logic. WARNING:Xst ...… 查看全部问答> |
|
大大们谁给个电子时钟设计。在单片机应用系统中,常需要一个实时时钟供定时、测控之用。单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格 ...… 查看全部问答> |
|
大四毕业,考上中国科学院研究生,专业方向是信号处理 想利用暑假和开学后的几个月系统的学习下嵌入式系统的原理和开发 考个认证。 我觉得最权威的是 全国计算机技术与软件专业技术资格(水平)考试 中级资格的嵌入式系统设计师。 不知道是不 ...… 查看全部问答> |
|
顶层模块为—— module ramout(input clkin,input [7:0] addr_read,output [11:0] data_read ); reg [ 7:0] cnt;reg [ 1:0] status; reg  ...… 查看全部问答> |




