假设我有一个我想要打包的结构(因为我正在与另一个程序进行通信,所以只需打包所有数据就可以保证它的网格化更简单。)
在gcc
中打包结构,你可以这样做:
struct __attribute((packed)) Mine { /* Members here */ };
std
库中是否定义了模板来执行此操作?
我问的原因是因为有std::aligned_storage
,这对于事物的对齐结束非常有帮助,并且在打包数据时有类似的事情似乎是合乎逻辑的。
这样存在吗?
答案 0 :(得分:2)
不,它不存在。 Standard明确指出struct中的打包字段是实现定义的。
它还提到对于位字段,位从一个位字段流向下一个字段的方式也是实现定义的(我得到你也使用位字段)。抱歉,您必须为您的编译器明确编写代码。
答案 1 :(得分:0)
虽然很难证明是消极的,但我确信答案是否定的。
从根本上说,std
几乎完全可以在相当明确定义的C ++中实现,只需要偶尔需要有限的编译器协调(例如std::size_t
是sizeof
表达式的类型)。您描述的功能与此概念完全不一致。