給定兩個結構聲明爲正在轉換爲嵌套結構指針安全嗎?
struct _inner {
char *inner_value;
};
struct _outer {
struct _inner common;
char *outer_value;
};
我可以假設,從struct _outer *
到struct _inner*
以下投將在每個編譯成功嗎?
struct _outer *outer_struct;
struct _inner *inner_struct = (struct _inner *)outer_struct;
什麼是C的最低標準版本,這個演員陣容保證成功?
EDIT:我在外部結構中將struct _one
更改爲struct _inner
。
'_outer'沒有'_inner',那麼我們應該假定它是typedef到'_one'? – 2015-02-11 12:03:35
如果你重新定義了struct _outer {char * outer_value; struct _one common;}'沒有問題,但是現在不好。 – 2015-02-11 12:03:58
請注意,雖然這可以保證在C標準的後續版本中起作用,但此保證的添加是編纂現有慣例的一個例子。 – 2015-02-11 12:09:24