2012-06-13 9 views
6

構造体が1つの関数でのみ使用されている場合は、その関数で宣言できますか?私はこれを行うことができます。ローカルのstruct in c

int func() 
{ 
    struct { 
     int a, b; 
    } s; 

    s.a=5; 

    return s.a; 
} 

GCCはそれで窒息、それは私が代わりに「申し訳ありませんが、あなたがそれを行うことができない」というのが理解できませんでした非常に奇妙な探してエラーを放出されます。

+9

エラーメッセージを表示した場合に役立ちます。 – Ryan

+0

@レイン私はエラーを得ることができるかどうかを確認するためにもう一度試しましたが、今回はそれがコンパイルされました。それは文法の問題のための非常に奇妙な探していた誤りだった(それはそれのmangled C++の名前のように見えたものとリンカの誤りだった) – baruch

+0

それに何も間違っていない。物事の名前を変更してみてください。多分あなたは既存の名前と衝突しました。 C++コンパイラを使用していますか? – wildplasser

答えて

9

これは完全に有効なC89/C99/C11コードです。これはタグなしの構造で、オブジェクトにはブロックスコープがあります。タグの識別子がオプションであることを確認するには、C99 6.7.2.3p6をチェックしてください。