gpt4 book ai didi

c - 我们什么时候不应该使用#pragma pack?

转载 作者:太空狗 更新时间:2023-10-29 16:31:30 31 4
gpt4 key购买 nike

在C中,当我们使用结构时,什么时候使用#pragma pack指令是不合适的..?

问题的补充......

有人可以解释更多关于使用指针访问未对齐数据会如何失败吗?

最佳答案

这里是固件开发者。 #pragma pack 是非常熟悉的领域。我会解释。

一般来说,您不应该使用#pragma pack。是的,它会使你的结构在内存中更小,因为它消除了结构成员之间的所有填充。但这会使访问这些成员的成本更高,因为这些成员可能不再符合其要求的对齐方式。例如,在 ARM 架构中,4 字节整数通常需要 4 字节对齐,但在压缩结构中它们可能不需要。这意味着编译器需要添加额外的指令来安全地访问该结构成员,或者开发人员必须逐字节访问它并手动重建 int。无论哪种方式,它都会产生比对齐访问更多的代码,因此您的结构最终会变小,但您的访问代码可能会变得更慢和更大。

当您的结构必须匹配精确数据布局时,您应该使用#pragma pack。这通常发生在您编写代码以匹配数据传输或访问规范时……例如,网络协议(protocol)、存储协议(protocol)、访问硬件寄存器的设备驱动程序。在这些情况下,您可能需要 #pragma pack 来强制您的结构匹配规范定义的数据布局。这可能会导致与上一段中提到的相同的性能损失,但可能是符合规范的唯一方法。

关于c - 我们什么时候不应该使用#pragma pack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822798/

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