Wikipediaを見てもらえればそれでいいと思っています。
個人的に重点だと思ったところだけ以下に記載しておきます。
- OS(UNIX)の移植用に開発されたため、OSカーネル向けの低レベルな記述ができる
- 手続き型言語
- コンパイラ言語
- 自由度、実行速度、コンパイル速度を優先した結果、
コンパイル後のコードの安全性が犠牲になっている
- フリーフォーマット
- 構造化をサポート
- モジュール化がファイル単位で可能
- プログラムを関数に分離できる
- 高級言語でありながら低レベル処理が可能
- 配列参照時の自動的な添字のチェックをしない
→ バッファオーバーフローの要因 - 文字列を格納するための特別な型が存在しない
→ バッファオーバーランの要因 - 自動変数の自動的な初期化をしない
→ 誤って不定の値の変数を読み出すバグを作り込みやすい - 入出力を含め、実行時の言語独自のランタイムシステムの存在をほとんど期待しない。
→ I/O関係は言語の外にあるため、機種依存性が低い - プログラムの実行に必要なハードウェア資源が他の高級言語より少なくてすむ
- K&R
標準化されるまでのもの。いわゆるK&Rがリファレンスとして使用された。 - C89
ISOとANSIが共同でCの企画の標準化が行われた。 - C95
C89に国際化のためのワイド文字版ライブラリが追加された。 - C99
C++の機能をいくつか取リ入れた機能拡張がなされた。 - MISRA-C
車載用ソフトウェアを対象としたCによるコーディングガイドライン
0 件のコメント:
コメントを投稿