包装数据的STD方法

std method for packing data

本文关键字:方法 STD 数据 包装      更新时间:2023-10-16

假设我有一个想要打包的结构体(因为我正在与另一个程序通信,打包所有数据更简单,这样可以保证它的网格化)。

gcc中打包一个结构体,你这样做:

struct __attribute((packed)) Mine { /* Members here */ };

std库中是否定义了一个模板来完成此操作?

我问的原因是因为有std::aligned_storage,这对事物的对齐端非常有帮助,并且对于包装数据有类似的事情似乎是合乎逻辑的。

这个存在吗?

不,它不存在。标准明确指出,结构中的打包字段是实现定义的。

它还提到,对于位字段,位从一个位字段流到下一个位字段的方式也是实现定义的(我知道你也在使用位字段)。对不起,但是你必须为你的编译器显式地编写代码。

虽然很难证明是否定的,但我确信答案是否定的。

基本上,std几乎完全可以在相当良好定义的c++中实现,只是偶尔需要有限的编译器协调(例如std::size_tsizeof表达式的类型)。你所描述的特征与这个概念完全不一致。

相关文章: