我想知道一个简单的宏offset_of_
是否需要不进行指针取消引用。例如,使用打包属性声明的C++
(表示此代码将使用C ++编译器编译)结构
struct A {
int x;
int y;
} __attribute__(packed);
假设在这种情况下,sizeof(int) == 4
为了计算y
内A
的偏移量,我编写了一个简单的宏:
#define offset_of_y (ptrdiff_t)(&(((A*)0)->y))
我们可以确定该宏的值始终为4
吗?调用宏时,是否从0
(可能是UB)取消指针的引用?
非常感谢您的答复。
答案 0 :(得分:3)