gpt4 book ai didi

c++ - -mmacosx-version-min 影响位域的打包行为?

转载 作者:行者123 更新时间:2023-11-28 04:29:38 28 4
gpt4 key购买 nike

我看到一个奇怪的行为,我的位域在填充中结束:

 struct Test {
unsigned short a : 1;
unsigned short b : 15;
};

当在 clang 中使用 -mmacosx-version-min=10.11(或更高版本)编译时(测试 4.0.1 和 Apple 的 10.0.0),我进入 https://github.com/arvidn/struct_layout :

struct ::Test [2 Bytes]
--- 2 Bytes padding ---

使用 -mmacosx-version-min=10.10(或更低)我得到:

struct ::Test [2 Bytes]
0: [unsigned short : 2] a -- {cache-line 0}
0: [unsigned short : 2] b

有人知道我违反了什么标准或规则吗?

谢谢!

最佳答案

您使用的struct_layout 工具似乎依赖于 DWARF 调试信息。您看到的差异并不反射(reflect)数据布局的差异,仅反射(reflect)可用调试信息的差异。

使用 -mmacosx-version-min=10.10 将使用的 DWARF 版本限制为版本 2,因为这是 macOS 10.10 的工具所能理解的全部内容。我希望您通过指定 -gdwarf-2 会得到类似的结果。

关于c++ - -mmacosx-version-min 影响位域的打包行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290437/

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