Error del compilador C2099
el inicializador no es una constante
Este error solo lo emite el compilador de C y únicamente se genera para variables no automáticas. El compilador inicializa variables no automáticas al inicio del programa y los valores con los que se inicializan deben ser constantes.
Ejemplos
El ejemplo siguiente genera la advertencia C2099.
// C2099.c
int j;
int *p;
j = *p; // C2099 *p is not a constant
El error C2099 también puede producirse porque el compilador no puede efectuar el plegamiento constante sobre una expresión en /fp:strict , porque la configuración del entorno de precisión de punto flotante (vea _controlfp_s para obtener más información) puede ser distinta en la compilación y en el tiempo de ejecución.
Cuando falla el plegamiento constante, el compilador invoca una inicialización dinámica, que no se permite en C.
Para resolver este error, compile el módulo como archivo .cpp o simplifique la expresión.
Para obtener más información, consulte /fp (Especificar comportamiento de punto flotante).
El ejemplo siguiente genera la advertencia C2099.
// C2099_2.c
// compile with: /fp:strict /c
float X = 2.0 - 1.0; // C2099
float X2 = 1.0; // OK