1

重複の可能性:
C99 まで宣言とコードの混在が禁止されていたのはなぜですか?

この警告に関連する質問がいくつかありますが、ISO C90 forbids mixed declarations and codeそもそもなぜこれが C90 標準に含まれているのかという質問には答えていません。

それで - なぜこの規定なのですか?

4

1 に答える 1

4

私が知っている最大の理由は、言語の文法とパーサーを単純化することです。

宣言を前もって行うと、コードのブロックは次のようになります。

{
    <declarations>
    <stmts>
}

<stmts>その結果、宣言を含む必要がないため、の定義が簡略化されます。これにより、パーサーが単純化されます。これは、ブロックの開始時にステートメントと宣言を明確にするだけでよいためです。

実際、コードブロックのこの特定の定義は、標準で体系化されています。

3.6.2 Compound statement, or block

Syntax

          compound-statement:
                  {  declaration-list<opt> statement-list<opt> }

          declaration-list:
                  declaration
                  declaration-list declaration

          statement-list:
                  statement
                  statement-list statement
于 2013-01-31T18:17:17.990 に答える