小编mic*_*l_s的帖子

在C++中检查结构是否良好对齐或包含间隙

我有一个问题,即在编译时应检查结构 - 如果它是完全对齐的,或者它是否包含间隙.检查可以在附加的测试代码中完成,但我不希望在实际的实现代码中"打包"数据.

这是一个带有典型包含警卫的示例头文件(MyData.h):

#ifndef MYDATA_H_
#define MYDATA_H_

struct uneven
{
  int bla_u32;
  short bla_u16;
  char bla_u8;
  /* <-- this gap will be filled in the unpacked version */
};

#endif // MYDATA_H
Run Code Online (Sandbox Code Playgroud)

我找到了一种可能的解决方案 - 见下文.

问题:

  • 有没有一种优雅的方法来检查结构uneven编译时是否包含与其解压缩的对应物不同的字节数?

  • 是否有可能在C中工​​作的解决方案(不使用命名空间)?

c c++

13
推荐指数
2
解决办法
400
查看次数

标签 统计

c ×1

c++ ×1