gpt4 book ai didi

结构体外部的 C 字节打包

转载 作者:行者123 更新时间:2023-11-30 15:12:42 26 4
gpt4 key购买 nike

我想知道 C 是否会在堆栈中打包字节以实现最佳 CPU 检索,即使它们位于 struct 之外。如果不是,为什么要专门针对 struct 这样做?

最佳答案

结构在 C 中使用非常广泛,编译器会执行各种技巧:(1) 对齐对象以提高访问速度 (2) 针对特定架构映射(例如 ARM - Thumb),开发人员可以编写代码来映射到外围寄存器。但有时,我们需要对跨不同系统(例如网络协议(protocol))的传输进行显式控制。

从嵌入式系统 (ARM) 的角度来看,以下是具体建议 - “不应使用 __packed 结构访问外设位置(允许未对齐的成员且没有内部填充) ),或使用 C 位域。这是因为无法控制编译器正在执行的内存访问的数量和类型。结果是代码不可移植,具有不良副作用,并且不会按预期工作”。

另请参阅Structure padding and packing

关于结构体外部的 C 字节打包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34960297/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com