次の構造体があります。
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)
そして、そのような構造体をゼロに等しくしないようなハードウェアまたはソフトウェア構成はありますか?