leeres array?
-
hi,
ein compiler frisst das:const char x[] = {};
ein anderer will's nicht (error, will in die {} was rein haben)
welcher hat recht?
-
Meines Wissens ist laut Standard ein Array mit der Länge 0 verboten. Und da die Klammern keinen Inhalt haben, wäre die Deklaration analog zu
int ary[0];
Das GCC-Handbuch listet 0-Längen Arrays als GNU-spezifische Spracherweiterung.
EDIT:
Recht haben sollte also der standardkonforme Compiler, der es ablehnt den Code zu übersetzen.
-
LordJaxom schrieb:
Das GCC-Handbuch listet 0-Längen Arrays als GNU-spezifische Spracherweiterung.
ja, der gcc war auch der, der's akzeptiert hat.
LordJaxom schrieb:
EDIT:
Recht haben sollte also der standardkonforme Compiler, der es ablehnt den Code zu übersetzen.ok, danke.
-
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum Compiler-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
C++ Forumbot schrieb:
Dieser Thread wurde von Moderator/in c.rackwitz aus dem Forum ANSI C in das Forum Compiler-Forum verschoben.
hey, es geht aber schon um c dabei
-
net schrieb:
ja, der gcc war auch der, der's akzeptiert hat.
Der gcc ist standardmäßig im GNU-Mode, den musst Du selbst auf etwas anderes umschalten, wenn Du die von LordJaxom angesprochenen GNU-Erweiterungen nicht aktiviert haben möchtest.
-
Verwende mal den Schalter -pedantic, dann sollte auch der GCC meckern.
-
groovemaster schrieb:
Verwende mal den Schalter -pedantic, dann sollte auch der GCC meckern.
Nicht eher mit -ansi -std=c99 oä? Wenn der GCC im GNU-Mode ist, dann stört ihn das ja nicht, daran ändert wohl auch ein -pedantic nichts.
-
Also -std=c99 scheint ihm nicht zu reichen, obwohl mich das auch irritiert. Nur mit -pedantic klappt es, und dann ist -std=c99 auch nicht mehr notwendig.