7

構造体が 1 つの関数でのみ使用される場合、その関数で宣言できますか? 私はこれを行うことができます:

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

    s.a=5;

    return s.a;
}

gccはそれを詰まらせましたが、「申し訳ありませんが、それはできません」と言う代わりに、私には理解できない非常に奇妙なエラーが発生しました。

4

1 に答える 1

10

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

于 2012-06-13T14:03:32.537 に答える