c++ - 是否可以手动计算类成员的字节偏移量?

标签 c++ compiler-construction class-members

也就是说,编译器生成类的标准是什么?例如,假设我有一个包含成员 xyz 的类 C,我想知道该类中 z 的偏移量。我可以只将其他成员的数据类型大小相加,就像我对结构所做的那样吗?

最佳答案

不,你不能。
编译器可以根据自己的选择自由对齐成员。这是编译器的一个实现细节。

如果您使用的是 POD ,那么你可以使用 offsetof 宏。

但是如果使用非 POD,那么我想不会有任何可移植的方法来这样做。

关于c++ - 是否可以手动计算类成员的字节偏移量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6682438/

相关文章:

c++ - 为什么 decimal128 可能会被标准化而 quad precision 不会?

php - 编译成 PHP 的编程语言?

compiler-construction - 为 CLR 实现函数式语言(或者,关于 F# 实现的论文)

matlab - 为重载的 `end` 函数创建函数句柄

c++ - 为什么 gcc 和 msvc 允许 const 对象没有用户提供的构造函数?这是一个错误吗?

c++ - 根据模板类型选择类模板的成员类型?

compiler-construction - SSA用于堆栈机代码

c++ - 使用 default_random_engine 作为类成员并且没有类会导致不同的数字(相同的种子)

c++ - 错误 LNK1169 : one or more multiply defined symbols found - global function