Udostępnij za pomocą


Błąd kompilatora C2099

Inicjator nie jest stałą

Uwagi

Ten błąd jest wystawiany tylko przez kompilator języka C i występuje tylko w przypadku zmiennych innych niż automatyczne. Kompilator inicjuje zmienne nieautomatyczne na początku programu i wartości, z którymi są inicjowane, muszą być stałe.

Przykłady

Poniższy przykład generuje kod C2099.

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

Może również wystąpić błąd C2099, ponieważ kompilator nie może wykonywać stałego składania w wyrażeniu w obszarze /fp:strict , ponieważ ustawienia środowiska precyzji zmiennoprzecinkowych (zobacz _controlfp_s , aby uzyskać więcej informacji) mogą się różnić od kompilacji do czasu wykonywania.

Gdy składanie ciągłe kończy się niepowodzeniem, kompilator wywołuje inicjowanie dynamiczne, które nie jest dozwolone w języku C.

Aby rozwiązać ten błąd, skompiluj moduł jako plik .cpp lub uprość wyrażenie.

Aby uzyskać więcej informacji, zobacz /fp (Określ zachowanie zmiennoprzecinkowe).

Poniższy przykład generuje kod C2099.

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