c++ - 如何计算结构的偏移量

标签 c++ c

我找到了一种计算结构偏移量的方法。如下:

#define offsetOf(type , f)  ((int)\
 ((char *)&((struct tagName*)0)->f-(char*)(struct tagName*)0)); 

但我经常这样写:

#define offsetOf(type , f)  ((int)(&((struct tagName*)0)->f); 

书上说NULL指针相减是为了确​​保NULL指针内部非零时正确。但我认为 NULL 指针的内部不会影响 NULL 指针的地址。

最佳答案

标准库应该提供一个 offsetof 来完全满足您的需求,我强烈建议您使用它,因为许多编译器会对需要的代码类型发出警告自定义变体。

无论如何,减法会将您的代码从指针域带到size_t 的域。我会说它更安全一些。

关于c++ - 如何计算结构的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7359306/

相关文章:

c - 数组允许在 C 中越界访问?

c - 多线程和读取文件

c - 将主机文件 C 中的主机名解析为 IP 地址

c - 结构内的结构、结构的嵌套

c++ - 这在虚函数中意味着什么?

java - 为什么 new 是 C++ 中的运算符

c++ - 闭式多项式求根算法

c++ - 隐式声明的(对象级)成员函数如何根据 ISO C++11 标准工作?

c++ - 计算创建为双指针的两个暗数组的大小

c - 了解 Unix dup2 系统调用?