「宣言」とは識別子の解釈,属性を指定するもので,必ずセミコロン ;
で閉じます。Example 2.1
で見た宣言
const int a = 0; register int m = 12; int n = 65;
では,変数 a
,m
,n
の属性を指定しています。キーワード(予約語)const
はデータの扱いを読み込み専用(read-only)とする「型修飾子」,int
は扱うデータの種類が整数(integer)であることを意味する「型指定子」,register
はデータの記憶域領域を CPU のレジスタにするようコンパイラに求める「記憶域クラス指定子」です(*)。また,識別子 a
や m
などを「宣言子」といい,=
の右辺側を「初期化子」と言います。このように,宣言は次から構成されています。
これらの内,型指定子は必須です。[C99, 6.7.2, 2] (また,型指定子にタグ,列挙体メンバが含まれない場合には宣言子が必要ですが,これについては後程再述します。)
* register
は元来,CPUのレジスタへの割り当てを意味しますが,仕様(C99)では「可能な限り速くアクセスすることを要求」となっており,実際の処理は処理系に任せています。[C99, 6.7.1, 4]