我有一个问题,即在编译时应检查结构 - 如果它是完全对齐的,或者它是否包含间隙.检查可以在附加的测试代码中完成,但我不希望在实际的实现代码中"打包"数据.
这是一个带有典型包含警卫的示例头文件(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中工作的解决方案(不使用命名空间)?