Unbekanntes Verhalten -> dynamische Array-Größe in C mit gcc
-
Hallo Leute,
ich hab schon lange nichts mehr mit C gemacht und heute wieder ein paar Kleinigkeiten versucht.
So wie ich es in Erinnerung hatte bricht der Compiler eine Arrayinitialisierung mit Laufzeitabhängiger Arraygröße wie z.B. hier
scanf("%i",&n); int arr[n];
ab, aber komischerweise passiert heute nichts und alles läuft ordnungsgemäß.
Habe ich das jetzt nur falsch in Erinnerung oder liegt das an den verschiedenen C-Standards und ich hab früher mit anderen Compiler-Flags kompiliert?Viele Grüße und einen schönen Sonntag an alle
-
Wenn du die Randbedingungen richtig hast und einen Compiler der das beherrscht, sollte das bei C99 möglich sein.
-
Setze beim gcc "-ansi -pedantic" und du erhälst entsprechende Warnungen.
Andere Nicht-C99 Compiler brechen auch gleich ganz ab.
-
Danke für eure Antworten, welche Randbedingungen meint ihr genau ?
Gruß
-
Randbedingung: Ein Compiler der mitmacht.
-
Ja, seit C99 enthält der Standard auch Arrays variabler Länge. Wenn dir die Verwendung in deinem Programm Vorteile bringt und du keine Legacy-Compiler unterstützen musst, kannst du das ruhig verwenden.
Da "-ansi" gleichbedeutend mit "-std=c89" ist und die Variable-Length-Arrays in C89/C90 noch nicht erlaubt waren, erhält man in dem Fall natürlich Fehler/Warnungen.
Alle C99-Compiler müssen das jedoch unterstützen.
-
Kein Visual Studio unterstütz C99.