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.


Anmelden zum Antworten