次の方法で共有


コンパイラ エラー 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