3

C99では、宣言を最初だけでなくコードと混合できることを知っていますが、ISO / IEC 9899:1999のどこに記述されているかを見つけようとしています。検索する必要のあるセクションを教えていただけますか?

前もって感謝します。

4

3 に答える 3

5

この変更は、(非規範的な)Forwardのxiiページに、「宣言とコードの混合」として記載されています。(私見、宣言「コード」です。「宣言とステートメントの混合」と言うべきでした。)

これは、6.8.2の複合ステートメントの文法で定義されています。

compound-statement:
    { block-item-list[opt] }
block-item-list:
    block-item
    block-item-list block-item
block-item:
    declaration
    statement

C89/C90標準の対応する文法は次のとおりです。

compound-statement:
    { declaration-list[opt] statement-list[opt] }
declaration-list:
    declaration
    declaration-list declaration
statement-list:
    statement
    statement-list statement
于 2012-12-13T19:56:07.297 に答える
2

答えは6.8.2節にあります。

block-item: declaration
            statement

Ablock-itemは、特定の順序である必要なしに、ステートメントまたは宣言のいずれかになります。

compound-statement:
                    { block-item-list_opt }
block-item-list: block-item
                 block-item-list block-item
于 2012-12-13T19:56:14.483 に答える
2

C 1999 6.8.2 2は、複合ステートメントは「{」、オプションのblock-item-list、および「}」であり、block-item-listはblock=-itemまたは別のblock-itemのいずれかであると述べています。 -listとblock-itemであり、block-itemが宣言またはステートメントであること。したがって、宣言は、複合ステートメント内の任意のブロック項目にすることができます。次に、6.8は、複合ステートメントは、ステートメントが表示できる場所であればどこにでも表示できることを示しています。さらに、6.9.1は、関数定義の本体が複合ステートメントであると述べています。

compound-statement:
    { block-item-list[opt] }

block-item-list:
    block-item
    block-item-list block-item

block-item:
    declaration
    statement
于 2012-12-13T19:56:29.477 に答える