Arrays variabler Größe: Eine GCC-Erweiterung
Der C-Standard schreibt vor, dass die Größe eines Arrays bei der Deklaration eine konstante Ganzzahl sein muss. Die Frage wirft jedoch die überraschende Beobachtung auf, dass ein Codeausschnitt, der eine nicht konstante Variable für die Array-Größe verwendet, in GCC erfolgreich kompiliert wird.
Die GCC-Erweiterung
GCC führt ein eine Erweiterung des Standards, die die Verwendung nicht konstanter Variablen für Array-Größen ermöglicht. Wie im zitierten Abschnitt aus „The C Programming Language“ erwähnt, wird dies vom Standard nicht unterstützt.
Die Überraschung
Der Codeausschnitt in der Frage deklariert eine Array v1 und eine Funktion f, die ein ganzzahliges Argument akzeptiert (das die Array-Größe darstellt). Beim Zuweisen eines Werts zu v2 in f lässt GCC dieses nicht standardmäßige Verhalten zu.
Auswirkungen
Obwohl GCC diese Erweiterung zulässt, ist es wichtig zu beachten, dass dies der Fall ist nicht Teil des C-Standards. Die Verwendung kann zu Portabilitätsproblemen mit anderen Compilern oder Systemen führen, die die Erweiterung nicht unterstützen.
Durchsetzung und Warnungen
Compiler können den Standard durch Optionen wie -pedantic durchsetzen . Mit dieser Option gibt GCC eine Warnung aus, wenn auf nicht standardmäßige Konstruktionen wie Arrays variabler Größe gestoßen wird. Ebenso macht die Angabe von -std=c 98 dieses Konstrukt zu einem Fehler.
Fazit
Die GCC-Erweiterung ermöglicht die Deklaration von Arrays variabler Größe, dies ist jedoch von entscheidender Bedeutung Beachten Sie, dass dies nicht Teil des C-Standards ist. Aus Gründen der Portabilität und Einhaltung des Standards wird die Verwendung konstanter Array-Größen empfohlen.
Das obige ist der detaillierte Inhalt vonKönnen GCC-Compiler Arrays variabler Größe in C verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!