Compartir a través de


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