1

offsetof(mystruct, myfield)データ メンバー ( ) のオフセットが、 で取得されたメンバー ポインターの生の値と数値的に等しいと仮定しても安全&mystruct::myfieldですか?それとも実装に依存しますか?

4

2 に答える 2

3

いいえ; メンバーへのポインターの実装が指定されておらず、「生の」値を取得するための変換が定義されていません。

于 2012-01-30T16:47:14.817 に答える
1

もちろん、形式的には実装依存です。実生活では、はい、データ メンバーへのポインターのポインターの最も一般的な実装は、計画と単純なオフセット、つまりoffsetof評価対象と同じものです (またはそれに基づいています)。

一部の実装では、正確なオフセットを使用し、パターンに頼って0xFFF...null ポインター値を表します。一部の実装0x000...では、null ポインター値のパターンを予約し、すべての「非 null」オフセットを だけインクリメントします1

于 2015-07-10T17:18:25.020 に答える