C言語
目次
編集入門的な内容
編集- 文字の表現
- 文字型と文字の入出力
- 文字列リテラル
- 文字列操作関数
- 配列と文字列
- 文字列リテラルの格納場所
- 可変長文字列の動的メモリ確保
- 文字定数と文字列リテラル
- ワイド文字列
- char8_t, char16_t, char32_t型
- char8_t型
- 文字エンコーディング
- 文字列をあつかうユーザ定義関数
- 共用体の基本概念
- 共用体の宣言と使用
- 共用体のメンバーの利用方法
- 共用体の初期化
- 共用体の応用例
- 共用体と列挙型(enum)との組み合わせ
- 共用体の注意点と使用上の考慮事項
- 共用体の実装例と演習問題
- まとめ
比較的高度な内容
編集- プリプロセッサの概要
- 基本構文
- 条件付きディレクティブ
- ソースファイルのインクルード
- バイナリリソースの埋め込み
- マクロの定義と置換
- 行制御
- 診断ディレクティブ
- プラグマディレクティブ
- ヌルディレクティブ
- 事前定義されたマクロ名
- プラグマオペレーター
- まとめと実践問題
- /データ型と変数の高度な話題 (typedef,enum, const など)
- 中級者向けの話題 (プログラム仮引数, inline, 再帰 など)
- ストレージクラス指定子
-
auto
-
constexpr
-
extern
-
register
-
static
-
thread_local
-
typedef
- 属性C23 非推奨化、フォールスルー禁止、非復帰など
- 型推論C23
- typeof演算子とtypeof_unqual演算子C23
- 標準ライブラリ
- 診断機能<assert.h>
- 複素数計算<complex.h>C99
- 文字操作<ctype.h>
- エラー<errno.h>
- 浮動小数点環境<fenv.h>C99
- 浮動小数点型の特性<float.h>
- 整数型の書式変換<inttypes.h>C99
- 代替つづり<iso646.h>C95
- 整数型の特性<limits.h>[1]
- 文化圏固有操作<locale.h>
- 数学<math.h>
- 非局所分岐<setjmp.h>
- シグナル操作<signal.h>
- アライメント<stdalign.h>C11[2]
- 可変個数の実引数<stdarg.h>
- アトミック<stdatomic.h>C11[3]
- 論理型及び論理値<stdbool.h>C99
- ビット・バイトユーティリティー<stdbit.h>C23[4]
- 共通の定義<stddef.h>
- チェック付き整数演算<stdckdint.h>C23[5]
- 整数型<stdint.h>C99
- 入出力<stdio.h>
- 一般ユーティリティ<stdlib.h>
- _Noreturn<stdnoreturn.h>C11[6]
- 文字列操作<string.h>
- 型総称数学関数<tgmath.h>C99
- スレッド<threads.h>C11[7]
- 日付及び時間<time.h>
- Unicodeユーティリティ<uchar.h>C11[8]
- 多バイト文字及びワイド文字拡張ユーティリティ<wchar.h>C95
- ワイド文字種分類及びワイド文字大文字小文字ユーティリティ<wctype.h>C95
C言語の歴史
編集C言語の起源は1969年頃にさかのぼります。当時ベル研究所でUNIXの開発が進められていましたが、システムを効率的に実装するための適切なシステムプログラミング言語がありませんでした。そこで当時ベル研究所に在籍していたケン・トンプソンが、MITで開発されたBCPL言語に影響を受けて、新しい言語「B言語」を作り出しました。
1972年頃になると、デニス・リッチーがB言語をベースに「C言語」の開発を開始します。C言語ではB言語になかったデータ型の概念を導入し、構造体なども追加されました。また、ポインタと配列の関係性に特徴的な設計がなされました。当初はUNIXの開発に利用されましたが、徐々に普及が広がっていきました。
1977-78年頃には、ポインタ規則の厳格化やunsigned
型の追加などの改良が行われ、1978年にはブライアン・カーニハンとデニス・リッチーによる「The C Programming Language」という書籍が出版され、C言語の事実上の権威ある解説書となりました。
1980年代に入ると、C言語の標準化の必要性が高まり、1983年にANSIによるC標準化委員会が発足しました。そして1989年に最初のANSI C標準が公開されることとなります。この標準化作業で言語仕様がさらに明確化され、const
、volatile
といった新しい機能も追加されました。
以降、C言語はUNIXをはじめとするOSでメインのシステムプログラミング言語として幅広く利用されただけでなく、アプリケーション開発でも広く使われるようになりました。また、C++などの後継言語の基盤ともなりました。単純でありながらも力強い表現力を持つC言語は、今日にいたるまで重要な役割を果たしてきました。
参考文献
編集- C - Project status and milestones. ISO/IEC. (2024-03-05) .
- ISO/IEC WG 14 Document Log. ISO/IEC. (2024-04-28) .
- C2y: ISO/IEC 9899:2024 (en) — N3220 working draft. ISO/IEC. (2024-02-22) .
- C23: N3096 working draft — April 1, 2023 ISO/IEC 9899:2023 (E). ISO/IEC. (2023-04-01) .
- ISO/IEC 9899:2018(en) Information technology — Programming languages — C. ISO/IEC. (2018-07-05) .
- N2176 C17 ballot ISO/IEC 9899:2017. ISO/IEC JTC1/SC22/WG14. オリジナルの2018-12-30時点によるアーカイブ。 .
- C11: WG14/N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. (2011-04-12) .
- C99: WG14/N1256 Committee Draft — Septermber 7, 2007 ISO/IEC 9899:TC3. ISO/IEC. (2007-09-07) .
- C99: ISO/IEC 9899:TC2 Committee Draft — May 6, 2005 WG14/N1124. ISO/IEC. (2005-05-06) .
- JIS X 3010:2003『プログラム言語C』. 日本工業標準調査会[9]. (2003-12-20). — 1999 年に第 2 版として発行された ISO/IEC 9899:1999,(Programming languages―C) 及び Technical Corrigendum 1 (2001)について,技術的内容を変更することなく日本工業規格[10]として採用するために作成されたもの[11]。
脚註
編集- ^ <limits.h>は、C99では"Sizes of integer types"、JISCでは、"整数型の大きさ" でしたが、C23では"Characteristics of integer types"となったので、<float.h>の/Characteristics of floating types/浮動小数点型の特性/ にならって "整数型の特性" の訳をあてました。
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 268, §7.15 Alignment <stdalign.h> .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 273, §7.17 Atmics <stdatomic.h> .
- ^ N3054 working draft — September 3, 2022 ISO/IEC 9899:2023 (E). ISO/IEC. (2022-09-03). p. 314,§ 7.20 Checked Integer Arithmetic .
- ^ N3054 working draft — September 3, 2022 ISO/IEC 9899:2023 (E). ISO/IEC. (2022-09-03). p. 305,§ 7.18 Bit and byte utilities .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 361, §7.23 _Noreturn <stdnoreturn.h> .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 376, §7.26 Threads <threads.h> .
- ^ N1570 Committee Draft — April 12, 2011 ISO/IEC 9899:201x. ISO/IEC. p. 398, §7.28 Unicode utilities <uchar.h> .
- ^ 当時、現:日本産業標準調査会
- ^ 当時、現:日本産業規格
- ^ ISO/IEC 9899:1999 (IDT)