20

2012 年です。C でコードを書いています。まだ C89 を使用する必要がありますか? C99 をサポートしないコンパイラはまだありますか?

/* */の代わりに使用してもかまいません//

についてはわかりませんC89 forbids mixing declarations and code。私は、実際にはすべての宣言を 1 か所にまとめた方が読みやすいという考えに傾いています。そうでない場合は、関数が長すぎます。

VLA は便利そうに見えますが、まだ必要ありません。

やむを得ない理由がなければ、C89 を使い続ける必要がありますか? 私が考慮していない他のものはありますか?

4

4 に答える 4

17

C99 と互換性のあるコンパイラ ( Visual Studio C コンパイラが最も有力な候補です)を使用できないことがわかっていない限り、C99 が提供する優れた機能を使用しない正当な理由はありません。

ただし、そのコンパイラをサポートする必要がある場合でも、一部のC99 機能を使用できますが、すべてではありません。

C99 の非常に便利な機能の 1 つはfor(int i = ...)、特に C には実際にブロック スコープがあるため、関数の上にループ変数を宣言する代わりに実行できることです。これは、それを上に置いても読みやすさが実際に改善されない種類の宣言です。

于 2012-08-12T21:26:25.623 に答える
10

C89 が C99 に取って代わられた理由 (または多くの理由) があります。特定の作業に使用できる C99 コンパイラがないことが確実にわかっている場合 (C を公式にサポートしていない Visual Studio に行き詰まっている場合を除き、可能性は低い)、C89 を使用する必要がありますが、それ以外の場合は、過去 20 年以上の改善の恩恵を受けることができるポジションです。C99 について本質的に遅いということはありません。

おそらく、最新の C11 標準を確認することも検討する必要があります。すべての C プログラマーが恩恵を受けることができる Unicode を扱うためのいくつかの重要な修正がありました (標準のその他の変更は絶対に最小限です)...

于 2012-08-12T21:32:24.997 に答える
7

優れたコードとは、パフォーマンス、スケーラビリティ、可読性、保守性が組み合わさったものです。

私の意見では、C99 はコードを読みやすく、維持しやすくします。C99 をサポートしていないコンパイラはほとんどないので、C99 を使用することをお勧めします。以前の標準を必要とするコンパイラでプロジェクトをコンパイルする必要があることが確実でない限り、利用可能なツールを使用してください。

C99 の利点について詳しくは、次のリンクをご覧ください。

http://www.kuro5hin.org/?op=displaystory;sid=2001/2/23/194544/139

http://en.wikipedia.org/wiki/C99#デザイン

C99 は などのライブラリ関数もサポートしていることに注意してくださいsnprintf。これらは非常に便利で、より優れた浮動小数点サポートを備えています。また、特に数学を多用するアプリケーション (暗号化アルゴリズムなど) を扱う場合は、マクロが非常に役立つことがわかりました。

于 2012-08-12T21:34:46.110 に答える