私が使用したいくつかのコンパイラ (gcc
さまざまなバージョンを除くすべて)では、 for ループ式の前ではなく内部でC99 mode
宣言するなどのエラーが発生しますint i
(オプションを使用しないstd=c99
場合)。ここを読んだ後、gcc
オプション-ansi
、-std=c89
、および-std=iso9899:1990
すべてが ANSI C 標準に評価されることを理解しましたが、標準と新しい標準(これが私が想定している最新のもの) を選択する必要があるかどうかがわかりません。c89
c99
また、C 言語の型標準には複数のバージョンがありますが、iso
そのうちの最初のもの (私の理解では) は ANSI 標準の直接のポートです。 Cの標準を更新すると言っても安全ですがiso
、Cの元のANSI標準は常に同じですか?
おまけの質問:
私は実際にこれを自分で理解することができます.私はまだそれをするのに時間がかかっていないので、誰かが頭の上で知っていればそれは素晴らしいことです.
私はその本のかなり新しい印刷物を持っていますThe C Programming Language (ANSI)
。私の本は常に次のように for ループを表示します:
int i;
for(i = 0; i < foo; i++)
しかし、多くの人 (ほとんどの場合、小指にプログラミングの才能がある人) は、for ループを次のように記述します。
(int i = 0; i < foo; i++)
最初の方法でループを記述しi
た場合、関数全体にアクセスできるはずですが、2 番目の方法で記述した場合、コンパイルする標準に関係i
なく for ループにのみアクセスできるというのは正しいですか? この同じ質問を別の方法でc89
行うと、標準でコンパイルすると、i
両方の for ループが関数全体にアクセスできるようになり、c99
標準でコンパイルするとi
、最初の for ループが関数全体にアクセスできるようになりますがi
、 2 番目の for ループは、for ループのみからアクセスできますか?