1.#pragma pack

#pragma pack 是一个编译指令,用于指定结构体、联合体和类成员的字节对齐方式。在 Keil uVision5 中,可以使用 #pragma pack 指令来设置字节对齐方式。一般我们用如下方式标识#pragma pack(n)

其中,n 是对齐系数,表示按照 n 字节对齐。常见的对齐系数包括 1、2、4、8 等。例如,若要将对齐系数设置为 4,比如:#pragma pack(4),该指令通常放置在结构体、联合体或类的定义之前,以影响其后的所有定义,

这里尤其需要注意,很多时候忘记恢复字节对齐导致了一些没必要的问题。这样一来,所有在 #pragma pack 后声明的结构体、联合体或类成员都将按照指定的字节对齐方式进行排列。

那么如果我们需要取消则需要采用#pragma pack () 来取消结构体对齐。

  #pragma pack (1)
  typedef struct _tag_Test2
  {
      uint8_t member1;
      uint16_t member2;
  
  }sTest2;
  #pragma pack () // 取消结构体对齐
  stSize = sizeof(sTest2);

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐