コンパイラ エラー C2099
初期化子が定数ではありません。
このエラーは C コンパイラでのみ発生し、非自動変数に対してのみ発生します。 コンパイラは、プログラムの開始時に非自動変数を初期化します。変数の初期化に使用される値は定数でなければなりません。
例
次の例では C2099 エラーが生成されます。
// C2099.c
int j;
int *p;
j = *p; // C2099 *p is not a constant
浮動小数点の有効桁数の環境設定 (詳細については「 _controlfp_s 」を参照) が実行時とコンパイル時では異なるため、 /fp:strict で式への定数の圧縮を実行できない場合にも、C2099 が発生します。
定数の圧縮が失敗すると、コンパイラは C で使用できない動的な初期化を呼び出します。
このエラーを解決するには、モジュールを .cpp ファイルとしてコンパイルするか、式を簡単にします。
詳細については、「/fp (浮動小数点の動作の指定)」を参照してください。
次の例では C2099 エラーが生成されます。
// C2099_2.c
// compile with: /fp:strict /c
float X = 2.0 - 1.0; // C2099
float X2 = 1.0; // OK