-mmacosx-version-min是否会影响位域的打包行为?

时间:2018-11-13 22:24:59

标签: c++ macos clang

我看到一个奇怪的行为,我的位字段最终被填充了:

<head>
<link href="https://vjs.zencdn.net/7.3.0/video-js.css" rel="stylesheet">
</head>

<body>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="poster.jpg" data-setup='{"fluid": true}'>
<source src="/files/CHANGE_THIS/1080p" type='video/mp4'>
</video>

<script src="https://vjs.zencdn.net/7.3.0/video.js"></script>

</script>
</body>

当用 struct Test { unsigned short a : 1; unsigned short b : 15; }; (或更高版本)用clang(经测试4.0.1和Apple的10.0.0)编译时,我进入https://github.com/arvidn/struct_layout

-mmacosx-version-min=10.11

有了struct ::Test [2 Bytes] --- 2 Bytes padding --- (或更低),我得到:

-mmacosx-version-min=10.10

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

谢谢!

1 个答案:

答案 0 :(得分:1)

您使用的struct_layout工具似乎依赖DWARF调试信息。您看到的差异并不反映数据布局的差异,仅反映在可用的调试信息中。

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