gpt4 book ai didi

c++ - 使用 alignas 对齐结构

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:50 30 4
gpt4 key购买 nike

在以下结构中:

struct alignas(?) test
{
int32_t f1; // 4 bytes
int8_t f2; // 1 byte
int8_t f3; // 1 byte
};

如何使用 alignas 使 sizeof(test) 正好是 6 个字节?

alignas(1) 不被编译器(gcc、msvc、clang)接受(错误如:error: requested alignment is less than minimum alignment of 4 for type 'test')。

更新。当然,这个变体可以正常工作:

#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 来做到这一点?

最佳答案

没有。 alignas 只能使对齐更严格,并且只能达到标准类型的最大对齐。

该标准没有提供类型不对齐的机制。

关于c++ - 使用 alignas 对齐结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652579/

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