私は、構造体があります。化合物リテラルに匿名ユニオンを割り当てることは可能ですか?
warning: initialization makes pointer from integer without a cast
warning: initialization from incompatible pointer type
まあ、それはです:gccが私のようないくつかの警告を与える
node n1 = {1, 0};
node n2 = {2, "test"};
:私はのように、複合リテラルを代入しようとすると
typedef struct _n
{
int type;
union {
char *s;
int i;
};
} n;
をコンパイラーが曖昧な型に値を代入するだけでは不安であることを明確にしてください。しかし、私はより正確に指定しようとした場合でも:
node n0 = {type: 1, i: 4};
は私が手:
error: unknown field ‘i’ specified in initializer
私はi:
前(union <union name>)
を置くならば、それが動作ことを読みました。しかし、私は匿名組合を持つことを好む。それを行う方法はありますか?
最初に私が見たのは驚きましたが、実際には合法的な(ただし廃止されていますが)初期化構文がGCCです。 – ephemient
私はいくつかのカーネルモジュールのコードを読むことから得た(私は廃止されたと推測される)初期化構文.. 'fops'構造はしばしばそのように書かれている。私は今C99の方法に切り替えます。匿名の組合についてはあまりにも悪いですが、私はそれらが標準ではないことを知らなかった、私のためにそれをクリアしてくれてありがとう。 – Steve