首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用对齐对齐结构

使用对齐对齐结构
EN

Stack Overflow用户
提问于 2015-11-11 14:24:22
回答 1查看 1.4K关注 0票数 2

结构如下:

代码语言:javascript
运行
复制
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。当然,这个变体是可以的:

代码语言:javascript
运行
复制
#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的方法来做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-11 14:43:34

不是的。alignas只允许您使对齐更加严格,并且只能达到标准类型的最大对齐。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33652579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档