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