In C ++ habe ich versucht, ein globales Array mit einer bestimmten Größe zu deklarieren. Ich habe den Fehler bekommen:
Array gebunden ist keine Ganzzahlkonstante vor dem Token ']'
Aber wenn ich ein Array des gleichen Typs in der main()Funktion deklariert habe, funktioniert es einwandfrei.
Warum gibt es hier ein anderes Verhalten?
int y=5;
int arr[y]; //When I comment this line it works fine
int main()
{
int x=5;
int arr2[x]; // This line doesn't show any error.
}
Bearbeiten: Viele schlagen vor, dass diese Frage ein Duplikat des Abrufs des Fehlers "Array gebunden ist keine Ganzzahlkonstante vor ']' Token" ist . Diese Frage beantwortet jedoch nicht, warum es ein anderes Verhalten gibt.
mainvon Ihrem Compiler "akzeptiert" wird: Sie verwenden die Compiler-Erweiterung, mit der VLAs kompiliert werden können, auch wenn sie vom C ++ - Standard nicht unterstützt werden.
yund xals const? Müssen Sie den Wert von yoder ändern x? Hoffentlich nicht, denn das wirft viele Fragen darüber auf, wie groß arrund wie groß arr2sein sollte - insbesondere in Bezug auf die Initialisierungsreihenfolge. (Hinweis: Sie sollten Konstanten sein)
--std=c++17(oder --std=c++11wenn es sich um einen älteren Compiler handelt), und die Kompilierung schlägt fehl.
mainwenn es nicht legal ist, verwendet es die VLA-Erweiterung.