1. ホーム
  2. c

[解決済み] C言語における変数宣言の配置

2022-05-28 19:43:01

質問

C 言語では、すべての変数は関数の最初に宣言されなければならないと長い間思っていました。C99 では、ルールは C++ と同じですが、C89/ANSI C の変数宣言の配置ルールはどうなっているのでしょうか。

で正常にコンパイルされた次のコードは gcc -std=c89gcc -ansi :

#include <stdio.h>
int main() {
    int i;
    for (i = 0; i < 10; i++) {
        char c = (i % 95) + 32;
        printf("%i: %c\n", i, c);
        char *s;
        s = "some string";
        puts(s);
    }
    return 0;
}

の宣言は cs は、C89/ANSI モードでエラーを引き起こすのでしょうか?

どのように解決するのですか?

GCCは、以下の宣言を許可しているので、正常にコンパイルできます。 s の宣言をGNU拡張として許可しているからです。もし、これらの標準に厳密に従いたいのであれば、GCCに -pedantic フラグを渡さなければなりません。

の宣言は c の冒頭で { } ブロックは関数である必要はありません。