構造体の特定のメンバーのサイズを取得したい。
sizeof(((SomeStruct *) 0)->some_member)
私にとってはうまくいきますが、もっと良い方法があるのではないかと思います。
#define SIZEOF_ELEM(STRUCT, ELEM) sizeof(((STRUCT *) 0)->ELEM)
使用することもできSIZEOF_ELEM(SomeStruct, some_member)
ましたが、もっと良いものがすでに組み込まれているのではないかと思います。
私の特定のユースケースはhsc2hs(Haskell Cバインディング)です。
pokeArray (plusPtr context (#offset AVFormatContext, filename)) .
take (#size ((AVFormatContext *) 0)->filename) .
(++ repeat '\NUL') $ filename