【发布时间】:2019-12-11 13:58:54
【问题描述】:
我知道在 C 语言中不允许编译器重新排序结构字段,这对结构的内存布局和对齐很重要。
我是 Rust 的初学者,因为如果允许 rustc 从它们在结构中声明的顺序重新排序字段,那么大部分原始指针似乎是隐藏的(我知道你仍然可以使用它们)。
【问题讨论】:
-
我的猜测是否定的,因为
unsafe代码仍然可以看到差异,并且您需要特定的布局来与用其他语言编写的函数交互,Rust 支持链接。但我对 Rust 还不够熟悉,无法确定。 -
与 C 中不同,Rust 结构字段的顺序不能保证,除非它是
repr(C)。阅读更多here