Erreur du compilateur C2099

l'initialiseur n'est pas une constante

Cette erreur est émise uniquement par le compilateur C et ne se produit que pour les variables non automatiques. Le compilateur initialise des variables non automatiques au début du programme et les valeurs avec lesquelles elles sont initialisées doivent être des constantes.

Exemples

L’exemple suivant génère l’erreur C2099.

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

L’erreur C2099 peut également se produire si le compilateur ne parvient pas à effectuer un repli de constante sur une expression sous /fp:strict , ce qui peut être dû au fait que les paramètres de l’environnement de précision en virgule flottante diffèrent entre le moment de la compilation et celui de l’exécution. Pour plus d’informations, consultez _controlfp_s .

En cas d’échec du repli de constante, le compilateur appelle l’initialisation dynamique, ce qui n’est pas autorisé en C.

Pour résoudre cette erreur, compilez le module en tant que fichier .cpp ou simplifiez l’expression.

Pour plus d’informations, consultez l’article /fp (Spécifier le comportement de virgule flottante).

L’exemple suivant génère l’erreur C2099.

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