我们应该在什么时候使用packsize来指定结构布局

when should we use packsize to specify the struct layout?

本文关键字:结构 布局 packsize 什么时候 我们      更新时间:2023-10-16

有时我认为我们可以指定包大小来指定结构的布局。我想知道,如果有任何情况,我们必须指定包装尺寸?

当您需要内存布局与其他地方定义的二进制格式(例如文件格式或网络协议)完全匹配时。

通常应该避免这种情况。合适的边缘情况是当使用结构在各种体系结构的机器之间进行通信时(例如,在通过网络传递的数据中)。然而,即使在这种情况下,您也必须意识到您支持的所有体系结构都存在任何对齐问题(例如,如果它只允许访问四字边界)。

我唯一一次使用它是在VB程序调用C++DLL时。这些结构必须匹配或不起作用。

如果您谈论的是#pragma pack,它用于指定数据对齐。如果要获取结构的大小(例如内存分配),请使用sizeof运算符。

structSize = sizeof( myStructType );