结构如下:
struct alignas(?) test
{
int32_t f1; // 4 bytes
int8_t f2; // 1 byte
int8_t f3; // 1 byte
};
如何使用alignas
使sizeof(test)
准确地为6个字节?
编译器(gcc、msvc、clang)不接受alignas(1)
(错误如:error: requested alignment is less than minimum alignment of 4 for type 'test'
)。
UPD。当然,这个变体是可以的:
#pragma pack(push, 1)
struct alignas(?) test
{
int32_t f1; // 4 bytes
int8_t f2; // 1 byte
int8_t f3; // 1 byte
};
#pragma pack(pop)
但是,有没有一种不用预处理器就只使用标准C++11/14的方法来做到这一点呢?
发布于 2015-11-11 14:43:34
不是的。alignas
只允许您使对齐更加严格,并且只能达到标准类型的最大对齐。
该标准不提供不对齐类型的机制。
https://stackoverflow.com/questions/33652579
复制相似问题