Partilhar via


Erro do compilador C2099

O inicializador não é uma constante

Observações

Este erro é emitido apenas pelo compilador C e ocorre apenas para variáveis não automáticas. O compilador inicializa variáveis não automáticas no início do programa e os valores com os quais elas são inicializadas devem ser constantes.

Examples

O exemplo a seguir gera C2099.

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

C2099 também pode ocorrer porque o compilador não é capaz de executar dobramento constante em uma expressão em /fp:strict porque as configurações do ambiente de precisão de ponto flutuante (consulte _controlfp_s para obter mais informações) podem diferir de tempo de compilação para execução.

Quando o dobramento constante falha, o compilador invoca a inicialização dinâmica, o que não é permitido em C.

Para resolver esse erro, compile o módulo como um arquivo .cpp ou simplifique a expressão.

Para obter mais informações, consulte /fp (Especificar comportamento de ponto flutuante).

O exemplo a seguir gera C2099.

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