4

在 C 中,我看到了一些 offsetof 的用法来计算结构中成员到其开头的偏移量?

是否仍然建议在 C++ 中使用?没有这个宏还有其他方法吗?

4

5 回答 5

1

C++ 有指向成员的指针。这些类似于偏移量,但 (1) 类型安全和 (2) 更通用 - 它们也适用于方法、基类等。

于 2014-03-28T16:09:15.757 回答
0

Offsetof 是仅在 C++ 标准中用于 C 兼容性的功能,因此不建议在 C 字中使用

于 2014-03-28T15:11:46.197 回答
0

除非你真的需要,否则我不会推荐它。只要您的使用在 C 中有效,它就应该对 C++ 有效。不知道你在做什么,你的问题是不可能回答的。

于 2014-03-28T15:13:50.893 回答
0

不,这不对。

适当的C++风格鼓励用户尽可能避免所有低级细节。这既是为了安全/正确性和可读性。只有当低级操作保证真正和显着的性能改进时,才应该跳入其中​​。

于 2014-03-28T15:17:46.873 回答
0

的用法之一offsetof()是在具有固定标头结构和可变大小数组的类 C 代码中,如本博文中所述:

为什么有些结构以大小为 1 的数组结尾?

(请注意,这篇博文使用了FIELD_OFFSET宏,它是一个 Windows 主义,对应于offsetof().)

我认为在现代 C++ 中,我们应该使用更高级别的技术和代码,例如std::vector可变大小的数组。

于 2014-03-28T15:24:20.993 回答