我们有以下结构:
struct parent {
char *name;
};
struct child {
struct parent parent;
int other_child_specific_data;
};
而且我们还有适用于的功能struct parent
:
void print_parent_name(struct parent *p)
{
printf("%s\n", p->name);
}
问题:我可以确定,像这样调用该函数:
struct child c;
c.parent.name = "Child #1";
print_parent_name(&c);
将始终与
print_parent_name(&c + offsetof(struct child, parent));
?
换句话说,问题是:offsetof(struct child, parent)
如果将struct parent parent
其作为第一个定义放在struct child
?
可能有人可以参考C标准吗?是否存在使offsetof(struct child, parent)
此类结构不等于零的硬件或软件配置?