問題タブ [offsetof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
gcc - offsetof を実装する gcc プラグイン
構造フィールドを解析するための gcc プラグインを作成しています。しかし、構造体の各フィールドのオフセットを取得する方法に問題がありますか? gcc の offsetof マクロと同じです。
DECL_FIELD_OFFSET
tree.hに表示されますが、結果が正しくないようです。
私のコードは、Richard WM Jones、https: //rwmj.wordpress.com/2016/02/24/playing-with-gcc-plugins/ からのものです。
テストソースファイルは次のとおりです。
しかし、オフセット
正しい結果ではありません:
c++ - c++ reinterpret_cast 整数
次のC++コードに出くわしました:
ここで、t は型、f はフィールド名です。なぜ reinterpret_cast のパラメータとして整数 16 を指定できるのだろうか。
c++ - offsetof にはポインターの逆参照が必要ですか?
offset_of_
単純なマクロに not のポインター逆参照が必要かどうか疑問に思っています。たとえば、C++
packed 属性で宣言された構造体 (このコードは C++ コンパイラを使用してコンパイルされることを意味します)
この場合、 insidesizeof(int) == 4
のオフセットを計算するためにy
、A
単純なマクロを作成したとします。
このマクロの値が常に であると確信できます4
か? 0
マクロが呼び出されたときに (UB である可能性がある)からのポインター逆参照はありますか?
返信ありがとうございます。
c++ - 関連付けられていない別のサブオブジェクトへのポインターを介して、あるサブオブジェクトへのポインターを取得することは可能ですか?
次の簡単なコードを見てください。
へのアクセス権がないため、 へのポインタのみを取得するため、main
の戻り値は に最適化できると思います。return 2;
something
p.y
p.x
しかし、主要なコンパイラはいずれも to の戻り値を最適化しませmain
ん2
。ゴッドボルト。
へのアクセスのみを許可する場合、標準something
に変更を許可するものはありますか? はいの場合、これは標準レイアウトがあるかどうかに依存しますか?p.y
p.x
Point
代わりにsomething(&p.y);
, andを使用するとどうなりますか?return p.x;