Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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