在 C 中,我看到了一些 offsetof 的用法来计算结构中成员到其开头的偏移量?
是否仍然建议在 C++ 中使用?没有这个宏还有其他方法吗?
C++ 有指向成员的指针。这些类似于偏移量,但 (1) 类型安全和 (2) 更通用 - 它们也适用于方法、基类等。
Offsetof 是仅在 C++ 标准中用于 C 兼容性的功能,因此不建议在 C 字中使用
除非你真的需要,否则我不会推荐它。只要您的使用在 C 中有效,它就应该对 C++ 有效。不知道你在做什么,你的问题是不可能回答的。
不,这不对。
适当的C++
风格鼓励用户尽可能避免所有低级细节。这既是为了安全/正确性和可读性。只有当低级操作保证真正和显着的性能改进时,才应该跳入其中。
的用法之一offsetof()
是在具有固定标头结构和可变大小数组的类 C 代码中,如本博文中所述:
(请注意,这篇博文使用了FIELD_OFFSET
宏,它是一个 Windows 主义,对应于offsetof()
.)
我认为在现代 C++ 中,我们应该使用更高级别的技术和代码,例如std::vector
可变大小的数组。