offset_of_単純なマクロに not のポインター逆参照が必要かどうか疑問に思っています。たとえば、C++packed 属性で宣言された構造体 (このコードは C++ コンパイラを使用してコンパイルされることを意味します)
struct A {
int x;
int y;
} __attribute__(packed);
この場合、 insidesizeof(int) == 4のオフセットを計算するためにy、A単純なマクロを作成したとします。
#define offset_of_y (ptrdiff_t)(&(((A*)0)->y))
このマクロの値が常に であると確信できます4か? 0マクロが呼び出されたときに (UB である可能性がある)からのポインター逆参照はありますか?
返信ありがとうございます。