整数コンパイル時定数 は、コンパイルの間に決定される値で、
実行時に変更することはできません。
整数コンパイル時定数式 は、
定数で構成されていて定数に対して評価される式です。
整数定数式は、以下の項目だけで構成される式です。
- リテラル
- 列挙子
- const 変数
- 整数または列挙型の静的データ・メンバー
- 整数型のキャスト
- sizeof 式。ただし、オペランドは可変長配列であってはならない。
可変長配列型に適用される sizeof 演算子は、実行時に評価され、
そのため、定数式ではありません。
以下のような状況においては、整数定数式を使用する必要があります。
- 添え字宣言子の中 (バインドされた配列の記述として)。
- switch ステートメントのキーワード case の後。
- 列挙子の中で、列挙型定数の数値として。
- ビット・フィールド幅の指定子の中。
- プリプロセッサーの #if ステートメントの中。(プリプロセッサーの #if ステートメントに列挙型定数、アドレ
ス定数、および sizeof は指定できません。)