Compilerfehler C2099

Aktualisiert: November 2007

Fehlermeldung

Initialisierung ist keine Konstante
initializer is not a constant

Dieser Fehler wird ausschließlich vom C-Compiler ausgegeben und tritt nur für nicht automatische Variablen auf. Nicht automatische Variablen werden vom Compiler beim Start des Programms initialisiert, und die Werte, mit denen diese Variablen initialisiert werden, müssen konstant sein.

Beispiel

Im folgenden Beispiel wird C2099 generiert.

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

C2099 kann auch auftreten, wenn der Compiler nicht in der Lage ist, eine konstante Faltung für einen Ausdruck unter /fp:strict durchzuführen, da die Umgebungseinstellungen für die Genauigkeit von Gleitkommaberechnungen zur Kompilierungszeit sich möglicherweise von den Einstellungen zur Laufzeit unterscheiden. (Weitere Informationen zu diesen Einstellungen finden Sie unter _controlfp_s.)

Wenn keine konstante Faltung möglich ist, wird vom Compiler eine dynamische Initialisierung aufgerufen, die in C nicht zulässig ist.

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

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