構造体の特定のメンバーのサイズを取得します。C:sizeof(((SomeStruct *)0) - > some_member)を行う良い方法は?
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
このアプローチには何が問題なのですか?十分にいいですね。標準のoffsetof()マクロも同じように動作します。 – qrdl
Cでは、酷いように見えますが、しばしば正しいです;) –