boost::endian 中未对齐的缓冲区类型是否保证它们之间没有填充?

问题描述

在 boost::endian 文档中,我们可以发现:

struct S {
  big_uint16_ut a;
  big_uint32_ut b;
};

是一种可移植的表达方式,与:

struct S {
  uint16_t a; // big endian
  uint32_t b; // big endian
} __attribute__ ((packed));

我想用这个库来“解析”二进制数据,但我有疑问。真的保证在 boost::endian::big_*_ut 类型的对象之间不添加填充吗?我深入研究了实现,这些类型只是内部包含 char 数组的类。标准里有没有规定这样的成员之间不加padding?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)