11

コンパイル時に構造体メンバーのバイトオフセットを見つけたいです。例えば:

struct vertex_t
{
    vec3_t position;
    vec3_t normal;
    vec2_t texcoord;
}

へのバイトオフセットがであることを知りたいと思いますnormal(この場合は12.)

を使用できることはわかっていますoffsetofが、これはランタイム関数であり、使用したくありません。

私が達成しようとしていることは可能ですか?

編集offsetofコンパイル時です、私の悪いです!

4

3 に答える 3

9

offsetofC.3 ドラフトC++標準セクションC標準ライブラリの 段落2を見ると、コンパイル時定数です。

C++ 標準ライブラリは、表 149 に示すように、C ライブラリから 57 個の標準マクロを提供します。

表には が含まれていますoffsetof。C99 ドラフト標準セクションに移動すると、7.17 一般的な定義の段落3には次のものが含まれます。

offsetof(型, メンバー指定子)

これは size_t 型の整数定数式に展開され、その値はバイト単位のオフセット [...]

于 2013-11-13T01:19:13.147 に答える