Поделиться через


Ошибка компилятора C2099

инициализатор не является константой

Замечания

Эта ошибка выдается только компилятором C и возникает только для неавтоматических переменных. Компилятор инициализирует неавтоматические переменные при запуске программы, и значения, с которыми они инициализируются, должны быть константами.

Примеры

В следующем примере создается C2099.

// C2099.c
int j;
int *p;
j = *p;   // C2099 *p is not a constant

Ошибка C2099 может также возникать, если компилятор не может выполнить свертывание констант в /fp:strict , так как параметры среды, задающие точность вычислений с плавающей запятой (дополнительные сведения см. в разделе _controlfp_s ), могут отличаться во время компиляции и во время выполнения.

Когда происходит сбой свертывания констант, компилятор вызывает динамическую инициализацию, которая в С не разрешена.

Чтобы устранить эту ошибку, скомпилируйте модуль как CPP-файл или упростите выражение.

Дополнительные сведения см. в разделе /fp (определение поведения с плавающей запятой).

В следующем примере создается C2099.

// C2099_2.c
// compile with: /fp:strict /c
float X = 2.0 - 1.0;   // C2099
float X2 = 1.0;   // OK