我找到了一种计算结构偏移量的方法。如下:
#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/