关于C和c++中使用的偏移量



在C中,我看到一些使用offsetof来计算结构中成员到其开始的偏移量。

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

c++有指向成员的指针。它们类似于偏移量,但(1)类型安全(2)更通用——它们也与方法、基类等一起工作。

offset是c++标准中为C兼容而提供的特性,因此不建议在C word

中使用

我不推荐它,除非你真的需要。只要你的用法在C中是有效的,那么在c++中也应该是有效的。如果你不知道自己在做什么,你的问题是无法回答的。

不,它不是。

适当的C++样式鼓励用户尽可能避免所有底层细节。这既是为了安全性/正确性,也是为了可读性。只有当低级操作保证了真正和显著的性能改进时,才应该开始使用低级操作。

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

为什么一些结构以大小为1的数组结束?

(请注意,这篇博客文章使用FIELD_OFFSET宏,这是一个Windows-ism,对应于offsetof()。)

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

相关内容

  • 没有找到相关文章

最新更新