2016-04-26 5 views
0

の部材の位置を評価:は、次の例を考えてみコンパイル時

struct mystruct 
{ 
    int a; 
    int b; 
    int c; 
}; 

int main() 
{ 
    mystruct x; 

    std :: cout << reinterpret_cast <size_t> (&(x.b)) - reinterpret_cast <size_t> (&x) << std :: endl; 
} 

上記何をする構造体mystruct内のメモリに部材bの位置を決定するreinterpret_cast Sを使用することです。私のシステム(と、私は、任意の合理的なシステムで)上の収率4を推測する。

私が必要とするのは、まったく同じですが、コンパイル時です。そんなことをする方法はありますか?私が必要とするのはstatic constexpr size_tです。コンパイル時にbの位置がmystructの範囲であることがわかります。

答えて

2

あなたが行うことができoffsetof macroと:

size_t constexpr b_offset = offsetof(mystruct, b); 

注、このクラスがまだ不完全であるので、あなたが同じクラス定義の関数のoffsetof外を使用することはできませんことを。

関連する問題