这个问题在这里已有答案:
如何在C中获取结构中成员的大小?
struct A { char arr[64]; };
我需要这样的东西:
的sizeof(A :: ARR)
谢谢
sizeof(((struct A*)0)->arr);
简而言之,将一个空指针强制转换为 struct A* 的类型,但由于未评估 sizeof 的操作数,因此这是合法的,并且允许您在不创建结构实例的情况下获取结构成员的大小 .
struct A*
sizeof
基本上,我们假装它的一个实例存在于地址0并且可以用于偏移和 sizeof 确定 .
要进一步阐述,请阅读本文:
http://www.embedded.com/design/prototyping-and-development/4024941/Learn-a-new-trick-with-the-offsetof--macro
1 回答
简而言之,将一个空指针强制转换为
struct A*
的类型,但由于未评估sizeof
的操作数,因此这是合法的,并且允许您在不创建结构实例的情况下获取结构成员的大小 .基本上,我们假装它的一个实例存在于地址0并且可以用于偏移和
sizeof
确定 .要进一步阐述,请阅读本文:
http://www.embedded.com/design/prototyping-and-development/4024941/Learn-a-new-trick-with-the-offsetof--macro