Freigeben über


Compilerfehler C2099

Initialisierung ist keine Konstante

Dieser Fehler wird nur vom C-Compiler ausgegeben und tritt nur für nicht automatische Variablen auf. Der Compiler initialisiert beim Programmstart nicht automatische Variablen und die Werte, mit denen sie initialisiert werden, müssen konstant sein.

Beispiele

Im folgenden Beispiel wird C2099 generiert.

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

C2099 kann auch auftreten, da der Compiler keine Konstantenfaltung für einen Ausdruck unter /fp:strict ausführen kann, da die Umgebungseinstellung für die Gleitkommagenauigkeit (weitere Informationen finden Sie unter _controlfp_s ) möglicherweise zwischen Kompilierungs- und Laufzeit abweichen.

Wenn bei der Konstantenfaltung ein Fehler auftritt, ruft der Compiler die dynamische Initialisierung auf, die in C nicht zulässig ist.

Kompilieren Sie das Modul als CPP-Datei, oder vereinfachen Sie den Ausdruck, um diesen Fehler zu beheben.

Weitere Informationen finden Sie unter /fp (Festlegen des Gleitkommaverhaltens).

Im folgenden Beispiel wird C2099 generiert.

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