私が使用したいくつかのコンパイラ (gccさまざまなバージョンを除くすべて)では、 for ループ式の前ではなく内部でC99 mode宣言するなどのエラーが発生しますint i(オプションを使用しないstd=c99場合)。ここを読んだ後、gccオプション-ansi、-std=c89、および-std=iso9899:1990すべてが ANSI C 標準に評価されることを理解しましたが、標準と新しい標準(これが私が想定している最新のもの) を選択する必要があるかどうかがわかりません。c89c99
また、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 ループのみからアクセスできますか?