Compartilhar via


Erro do compilador C2099

inicializador não é uma constante

Esse erro é emitido apenas pelo compilador do C e ocorre apenas em 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.

Exemplos

O exemplo a seguir gera o C2099.

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

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

Quando o dobramento de constante falha, o compilador invoca a inicialização dinâmica, que não é permitida no 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 o C2099.

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