3

offset_of_単純なマクロに not のポインター逆参照が必要かどうか疑問に思っています。たとえば、C++packed 属性で宣言された構造体 (このコードは C++ コンパイラを使用してコンパイルされることを意味します)

struct A {
  int x;
  int y;
} __attribute__(packed);

この場合、 insidesizeof(int) == 4のオフセットを計算するためにyA単純なマクロを作成したとします。

#define offset_of_y (ptrdiff_t)(&(((A*)0)->y))

このマクロの値が常に であると確信できます4か? 0マクロが呼び出されたときに (UB である可能性がある)からのポインター逆参照はありますか?

返信ありがとうございます。

4

1 に答える 1