gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 23:00:56 25 4
gpt4 key购买 nike

我有一个问题,应该在编译时检查一个结构,它是否对齐良好或是否包含间隙。检查可以在额外的测试代码中完成,但我不希望在真正的实现代码中“打包”数据。

这是一个带有典型包含保护的示例头文件 (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

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

问题:

  • 有没有一种优雅的方法来检查结构 uneven编译时 的未打包对应结构相比是否包含不同数量的字节?

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

最佳答案

适用于 C 和 C++ 的编译器特定解决方案:GCC 有一个警告选项 -Wpadded,它会为每个因对齐而改变大小的定义生成警告。

关于c++ - 在 C++ 中检查结构是否良好对齐或包含间隙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38613419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com