我有一个关于C/C++中对齐的问题。在Determining the alignment of C/C++ structures in relation to its members中,迈克尔·伯尔发布了这样一个宏图:
#define TYPE_ALIGNMENT( t ) offsetof( struct { char x; t test; }, test )在评论中,有人写道,对于非POD类型,这可能会失败。有没有人能给我一个这个失败的代码示例?
发布于 2010-03-29 21:02:20
offsetof仅指定用于POD类型。如果类包含任何非POD的数据成员,则该类本身不是POD。因此,如果您的示例中的t是非POD类型,则不能保证其正常工作。
来自C++标准(18.1/5):
在本国际标准中,宏
offsetof接受一组受限的type参数。type应为POD结构或POD联合。
因此,如果在非POD类型上使用offsetof,结果是未定义的。
https://stackoverflow.com/questions/2537947
复制相似问题