我想要获取结构中特定成员的大小。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 2009-06-18 19:40:58