1字节对齐:__attribute__((packed))和#pragma pack(push, 1) 区别
这两个指令的目的完全一样:强制取消内存对齐,让结构体成员紧凑排列(按1字节对齐)。但是,它们的作用范围和兼容性有显著区别。对于你正在编写的dw_uart_regs_t(UART 寄存器映射),推荐使用#pragma pack方案,或者使用更现代的写法。以下是详细对比:1. 核心区别对比表特性#pragma pack(push, 1)__attribute__((packed))作用范围全局/区域生效它像一个开关,打开后,后面定义的所有结构体都会受影响,直到你关闭它。仅针对当前结构体它像一张贴纸,只贴在当前这个结构体上,不影响文件里其他的结构体。编译器兼容性通用GCC, Clang,MSVC (Windows), IAR, Keil 都支持。GCC/Clang 专用MSVC 编译器不识别这个语法(会报错)。安全性需要使
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2548131.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!