Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
инициализатор не является константой
Замечания
Эта ошибка выдается только компилятором 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