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.
main
von 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.
y
und x
als const
? Müssen Sie den Wert von y
oder ändern x
? Hoffentlich nicht, denn das wirft viele Fragen darüber auf, wie groß arr
und wie groß arr2
sein sollte - insbesondere in Bezug auf die Initialisierungsreihenfolge. (Hinweis: Sie sollten Konstanten sein)
--std=c++17
(oder --std=c++11
wenn es sich um einen älteren Compiler handelt), und die Kompilierung schlägt fehl.
main
wenn es nicht legal ist, verwendet es die VLA-Erweiterung.