sizeof结构成员

如何在C中获取结构中成员的大小?

struct A { char arr[64]; }; 

我需要这样的东西:

的sizeof(A :: ARR)

谢谢

 sizeof(((struct A*)0)->arr); 

简而言之,将一个空指针强制转换为struct A*的类型,但由于sizeof的操作数未被计算,因此这是合法的,并且允许您在不创建结构实例的情况下获取struct成员的大小。

基本上,我们假装它的一个实例存在于地址0,并且可以用于偏移和sizeof确定。

要进一步详细说明,请阅读本文:

http://www.embedded.com/design/prototyping-and-development/4024941/Learn-a-new-trick-with-the-offsetof–macro