問題タブ [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.
c++ - メンバーへのポインター、型記述子、および参照
私は C++11 で型記述子プロジェクトに取り組んでいます。型記述子の仕事は、クラス内のすべてのメンバーの型、サイズ、およびオブジェクトのベースからのオフセットを知ることです。多重継承や仮想メソッドを持つオブジェクトはサポートしていないので、今のところこれをもっと簡単にしています。目標は、記述子を使用してオブジェクトをシリアル化および非シリアル化できるようにすることです。
これは、可変個引数テンプレート、メンバーへのポインター、および私がよく知らない C++ のその他の機能などの機能をいじるためのペット プロジェクトであるため、boost::archiving のようなものに向ける必要はありません。:)
実際にメンバーを登録する方法は、boost::python::class_ の方法とよく似ています。
残念ながら、今週初めに学んだように、C++ のポインターからメンバーへの機能は C++ の参照では使用できません: https://stackoverflow.com/a/8336479/1074536。たとえば、 &Foo::refToAndInt を使用します。
メンバーのオフセットを計算する方法に関しては、クラスが常に POD であるとは限らないため、マクロのオフセットを使用していません。
したがって、参照のオフセットを計算するためにメンバーへのポインターを使用できないため、次のことを試してみようと思いました。
しかし、別のスタック オーバーフロー スレッドで指摘されていますが、これは未定義の動作であり、明らかに LLVM ではクラッシュします。:(
前のメンバーのオフセットを取得し、そのサイズを追加してから、次のメンバーを整列させるために必要なパディングを何らかの方法で計算するようなことは避けたいと思います。
したがって、これらのトリックの両方を使用することはできず、offsetof は POD 専用です。私の他の恐ろしい提案とは別に、次に何を試すことができるかについて何か提案はありますか?
ありがとう!
javascript - すべての offsetParent または合計 offSetTop と合計 offSetLeft を取得する
親要素のレベルが多く、合計される可能性がある子要素の合計 offSetTop と合計 offSetLeft を取得したいと考えています。
手動で1つずつ追加する以外に、それは簡単な方法ですか?
c++ - データメンバーへのポインターはそのオフセットですか?
offsetof(mystruct, myfield)
データ メンバー ( ) のオフセットが、 で取得されたメンバー ポインターの生の値と数値的に等しいと仮定しても安全&mystruct::myfield
ですか?それとも実装に依存しますか?
c++ - offsetofマクロの正しい使用法
私はoffsetof
次のようにマクロを操作しようとしています。
そしてそれはこの単純なテストケースで動作するようです:
今本当の質問:
- 安全ですか?( g ++で動作すると仮定)
- 標準の最適化で機能しますか?(主に
-O2
) - 私がしていることをするためのより良い方法はありますか?(すべてのxとyを保存しないようにする必要があります
MapBlock
が、関連することを知らなくてもブロックを介してそれらにアクセスできますMapTile
) u8
オフセットを引くときにキャストを回避できますか?いいえと思いますが、確認したかっただけです。
ありがとう
c - 「offsetof」を使用して異なる構造間で「memcpy」を実行するには?
私は次の2つの構造を持っています。とを使用d, e, f
してコピーする必要があります。これどうやってするの?source
destination
memcpy
offsetof
c++ - C ++のネストされたC構造体のoffsetof()
C ++(Linux)のソケットの1つにソケットフィルターを追加しようとしています。ソケットフィルターでは、別の構造内にネストされているstructfork_proc_eventのオフセットを取得する必要があります。定義は次のようになります(cn_proc.h):
CIではこれを行います:
int off = offsetof(struct fork_proc_event, parent_pid);
ただし、私はC++で開発しています。私がこれをやろうとすると:
int off = offsetof(proc_event::fork_proc_event, parent_pid);
次のエラーが発生します。
offsetof()行はどのように見えるべきですか?
c++ - 使い捨てのネストされたクラスであるデータ メンバー内から非 POD オブジェクトのアドレスを取得する
私はいくつかのコードから始めます:
明らかに、これは不自然な例です。コードは正常にコンパイルされますが、「非 POD タイプ 'myNonPODClass' のオフセット」が心配です。myNonPODClass ポインターをネストされた匿名クラス コンストラクター (または同様のもの) に渡すことなく、本質的に同じことを行うより良い方法はありますか? 「メンバー」は、初期化なしで準備ができている必要があります。出来ますか?ありがとう!
いったい何のためにこれが必要なのか疑問に思っている方のために、私の PROPERTY マクロとコメントアウトされたペーストビンの例 (はい、素晴らしいです ^^ ): http://pastebin.com/xnknf39m
c++ - GLM で offsetof を使用する (OpenGL 数学)
GLM OpenGL 数学ライブラリを使用して OpenGL プログラムを作成しています。頂点位置、法線、テクスチャ座標を 1 つのクラスにまとめたいと思います。
次に、これらの配列を頂点バッファー オブジェクト (VBO) として使用します。ただし、VBO をマップするために呼び出すとき は、メンバーとメンバーglVertexAttribPointer
の結合された Vertex 構造体にオフセットを与える必要があります。normal
texcoord
これらがPODだったら、次のようなものを使用できたはずです
しかし、それは glm データ型では機能しません (または、少なくとも g++ 4.4.3 は救済されます)。
Vertex のメンバーのオフセットを取得するための推奨される方法は何ですか?
offsetof
(任意の C++ オブジェクトを使用できない一般的な理由は理解していますが、この特定のケースでは、物事が明確に定義されているようです)。
c++ - C++コンパイル-テンプレート内の時間オフセット
メンバーセレクターでoffsetof
から使用する必要があります。template
厄介な構文を許せば、私は方法を考え出しました:
使用法は完璧ではありません(せいぜい迷惑です):
非constexpr
フォームの方が使いやすいです。
コンパイル時に実行されないという明らかな欠点があります(ただし、使いやすい):
私が探しているのは、非多様性のようなconstexpr
構文ですが、それでも完全にコンパイル時です。ただし、その構文を思い付くことができません。(他のタイプの特性と同様に)私も満足しますがoffset_of<&S::x>::value
、その構文の魔法を理解することはできません。
c++ - なぜoffsetof(member)はsizeof(struct)と等しいのですか?
次のように定義された構造体があります。
この構造体を呼び出すsizeof
とoffsetof
:
出力は次のとおりです。
stuct のサイズが 4 で、char が 1 バイトを使用しているのに、int 配列のオフセットが 4 なのはなぜですか? なぜある種のパディングがあるのですか?また、int 配列がまったくスペースを占有しないのはなぜですか?