C11はC99エラーを修正します

2011年12月、 ISO / IEC 9899:2011が承認され、Cプログラミング言語の新しい標準であるC11またはC1Xとしても知られています。



C ++標準化委員会の元メンバーであるダニー・カレフは、C11の主な革新が何であるかを簡単に説明しています:マルチスレッド、匿名構造およびユニオン、およびC ++にすでに存在する他の多くの機能をより良くサポートする新しいメモリモデルです。



一部の必須C99関数は、C11ではオプションになります(可変長配列、複合データ型など)が、一部のC ++関数が追加されています。 CおよびC ++委員会は、最大限の言語互換性を確保するために緊密に協力しました。



C11はC99の13年後に採用され、以前のバージョンの標準で発生した問題を解消するはずである、とKalevは書いています。 実際、C99はあまりにも革新的であり、非常に多くの新しい関数を実装しているため、それらすべてをサポートするコンパイラ少なくとも1つ見つけることは依然として困難です。



C99の必要な機能の一部が一部のプラットフォームで実装することが困難だったため、問題が発生しました。 他のベンダーは、一部のベンダー(Microsoftなど)がCプログラマーにC ++に切り替えるようアドバイスするまで、議論の余地があるか実験的であると見なされていました。



政治はまた、C99の認識の悪さにも寄与しました。CおよびC ++標準化委員会が90年代後半に十分に協力しなかったのは秘密ではありません。 良いニュースは、この共同作業がより良くなったということです。C11はC99での設計ミスを回避しました。



安全なプログラミング



Cコードのセキュリティは常に懸念事項です。 境界チェックのない文字列処理関数と引数チェックのないファイルI / O関数は、マルウェアの脆弱性の恒常的な原因でした。



C11は、過去の安全でない対応物を置き換える必要のある、より安全な標準関数の新しいセットを導入することにより、これらの問題を解決します(ただし、C ++ではまだ使用されています)。



さらに、C11にはUnicodeサポートが含まれ、浮動小数点と複素数、匿名構造と結合、データアライメント、 _Noreturn



関数_Noreturn



および最も重要なマルチスレッドサポートを表すIEC 60559に準拠してい_Noreturn






All Articles