予約語(C言語)
C言語の予約語(Reserved Words)は、プログラミング言語の中で特別な意味を持つ単語で、変数名や関数名として使用できないキーワードです。これらはC言語の文法や動作を定義するためにコンパイラが認識するもので、データ型、制御構造、メモリ管理など、プログラムの基本的な構成要素を制御する役割を果たします。以下に、C言語の予約語をカテゴリごとにグループ化し、表形式で整理しました。
1. データ型関連
予約語 |
説明 |
signed |
符号付き型 |
unsigned |
符号なし型 |
char |
文字型 |
short |
短整数型 |
int |
整数型 |
long |
長整数型 |
float |
単精度浮動小数点型 |
double |
倍精度浮動小数点型 |
void |
型なしまたは空 |
_Bool |
真偽値型(C99以降) |
_Complex |
複素数型(C99以降) |
_Imaginary |
虚数型(C99以降) |
-
_Bool
, _Complex
, _Imaginary
はC99で追加された型で、古いコンパイラ(C89/C90)では使用不可。組み込みでは対応していない場合も多いので注意。
-
void
は関数の戻り値なしやポインタの汎用型(例: void *
)に使われる。
2. 型修飾子
予約語 |
説明 |
const |
定数を定義(変更不可) |
volatile |
変数の最適化を抑制 |
restrict |
ポインタの制限(C99以降、最適化用) |
-
volatile
は組み込みで必須。ハードウェアレジスタや割り込みで変化する値を扱う際に使用(例: volatile int *reg
)。
-
restrict
はポインタのエイリアシングを防ぎ、最適化を助けるが、組み込みではあまり使われない。
3. 制御構造
予約語 |
説明 |
if |
条件分岐 |
else |
if文の代替条件 |
switch |
多分岐制御構文 |
case |
スイッチ文の分岐ラベル |
default |
スイッチ文のデフォルトケース |
for |
forループ |
while |
whileループ |
do |
do-whileループ |
break |
ループやスイッチ文の終了 |
continue |
ループの次のイテレーションへ移行 |
goto |
指定ラベルへのジャンプ |
return |
関数の戻り値 |
-
goto
は可読性を下げるため避けるべきだが、組み込みではエラー処理(例: リソース解放)に使われることがある。
-
switch
は整数値のみ対応(文字列不可)。
4. 記憶クラス指定子
予約語 |
説明 |
auto |
自動変数の宣言(デフォルト) |
extern |
外部変数や関数の宣言 |
register |
レジスタ変数の提案 |
static |
静的変数や関数の定義 |
-
auto
はほぼ使われない(ローカル変数はデフォルトでauto
)。
-
static
は変数のスコープをファイル内に限定したり、値を保持したりするのに便利(例: カウンタ)。
-
register
は現代のコンパイラでは効果が薄く、使用頻度が低い。
5. 構造体・共用体・列挙型
予約語 |
説明 |
struct |
構造体 |
union |
共用体 |
enum |
列挙型 |
typedef |
型の別名定義 |
-
union
は同じメモリ領域を複数の型で共有。組み込みで通信データのパースに有用。
-
typedef
は長い型名を簡潔に(例: typedef unsigned int uint32_t
)。
6. 演算子・関数関連
予約語 |
説明 |
sizeof |
オブジェクトのサイズを返す演算子 |
inline |
インライン関数の提案(C99以降) |
-
sizeof
はデータ型のバイト数を確認するのに必須(例: sizeof(int)
)。
-
inline
は小さな関数の呼び出しオーバーヘッドを削減するが、コンパイラが無視する場合もある。