C99 が発行されてから 10 年以上が経過しました。ただし、これまでのところ、C99 のすべての新機能をサポートするコンパイラは、あったとしてもほとんどありません。なんで?
ところで: C99 に完全に準拠しているコンパイラは本当にありますか?
C99 が発行されてから 10 年以上が経過しました。ただし、これまでのところ、C99 のすべての新機能をサポートするコンパイラは、あったとしてもほとんどありません。なんで?
ところで: C99 に完全に準拠しているコンパイラは本当にありますか?
Wikipedia: C99 Implementationsによると、ほとんどの一般的なコンパイラ (Visual Studio を除く) はほとんどの C99 機能 (gcc や clang など) をサポートしていますが、一部のコンパイラは既に C99 に完全に準拠しています。
その理由の 1 つは、C99 の一部の機能が一部のコンパイラ ベンダーにとって役に立たないことだと思います。一方、最新の標準である C11 では、実装が標準の特定の部分をサポートしないことを許可しています。これには、複雑な型や可変長配列など、C99 でサポートが必須であったものも含まれます。(C11 §6.10.8.3条件付き機能マクロを参照)
ところで: C99 に完全に準拠しているコンパイラは本当にありますか?
2 つの主要なパブリック ドメイン コンパイラである clang と gcc は、入手できる限りのものです。C ライブラリにいくつかの小さな問題が残っている可能性がありますが、通常、C ライブラリはコンパイラとは別のプロジェクトです。
clang は C99 をデフォルトとしており、比較的急速に C11 に向かっています。
フラグ付きの gcc-std=c99
は、実用的な目的で準拠しています。