Unter GCC 4.8.1Array mit variabler Größe in C in VS
static int len = 10;
int main() {
int a[len];
return 0;
}
kann Erfolg kompilieren.
Aber kompilieren, wenn wie folgt geändert fehlschlagen:
static int len = 10;
int main() {
static int a[len];
return 0;
}
Aber in meinem Visual Studio, auch die ehemaligen Erfolg nicht zusammenstellen kann. Wie kann ich dieses Problem beheben? Und gibt es eine Möglichkeit, die letztere zu ändern, um Erfolg zu erzielen?
Wenn Sie Visual Studio verwenden möchten, die offensichtliche Lösung ist, die VLAs zu ersetzen durch Zeiger und explizit malloc den Speicher. In C99 sind sie wirklich eine eher unbedeutende Konvenienz und es ist leicht genug ohne zu leben. –
@JohnColeman Sie haben Recht, aber ich stimme nicht damit überein, dass die VLAs "eine kleine Annehmlichkeit" sind. In den meisten Implementierungen warten sie auf das Auftreten von segfaults, weil sie im Wesentlichen unkontrollierbare Aufrufe von 'alloca()' sind. –
@Rhymoid Ist das der Grund, warum C11 einen Schritt zurück genommen hat? –