ISO C90 verbietet Array variabler Länge

Ich berechne dynamisch die Größe eines Arrays. So etwas wie:

<code>void foo(size_t limit)
{
  char buffer[limit * 14 + 1];
}
</code>

Aber nur der GCC-Compiler sagt:

<code>error: ISO C90 forbids variable length array ‘buffer’
</code>

Auf der Suche nach SO habe ich gefundendiese Antwort:

C99 §6.7.5.2:

Wenn die Größe ein Ausdruck ist, der kein ganzzahliger konstanter Ausdruck ist ... ... muss er bei jeder Auswertung einen Wert größer als Null haben.

Also habe ich die Neudeklaration der Größenbegrenzungs-Typvariablen durchgeführt, um:

<code>void foo(const size_t limit)
</code>

Aber es warnt mich immer noch. Ist das ein GCC-Fehler?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage