Kommentare mit Doppelslash // funktionieren mit dem GCC 4.4.3 nicht
-
Hallo,
ich glaube, dass ich eine für mich peinliche Frage stelle, die sich aber schlecht recherchieren lässt. Warum funktionieren Doppelslash's "//" bei mir im GCC 4.4.3 nicht?
Fehler: expected expression before »/« token
. Nach dieser Diskussion hat das mit dem C98 bzw. C99 Standard zu tun. Damit kenne ich mich leider überhaupt nicht aus. (Überrascht war ich auch, als ich las, dass der GCC nicht komplett den C99 Standard unterstützt. Aktuelle Informationen, in wie weit der Standard erfüllt wird, fand ich aber nicht.) In kurz: Muss ich mir "//" verkneifen oder gibt es noch Hoffnung?Grüße,
Tim
-
^^seltsam. normalerweise geht //. irgendwas musste falsch machen (vielleicht ist eine compileroption aktiv, die den gcc auf vor-C99 zwingt?).
zeig doch mal den code.
-
Ha! Du schon wieder, fricky! Danke dir!
#include <stdio.h> int main(int argc, char** argv) { // Test-Kommentar return 0; }
gcc -Wall -ansi -o "test" "test.c" (im Verzeichnis: /home/tim/gcc)
test.c: In Funktion »main«:
test.c:5: Fehler: expected expression before »/« token
test.c:7: Warnung: Kontrollfluss erreicht Ende einer Nicht-void-Funktion
Kompilierung fehlgeschlagen.Ergänzung 1:
Nicht hauen, nicht Schlagen! Bitte!Ich habe da nun eine Vermutung. Liegt es an folgenden Include-Parametern?
gcc -ansi -Wall -c "%f"
-
Katzenstreu schrieb:
Ich habe da nun eine Vermutung. Liegt es an folgenden Include-Parametern?
gcc -ansi -Wall -c "%f"
kann sein, mach das -ansi mal testweise weg oder häng ein -std=c99 dran.
-
Japp, ohne "-ansi" läuft. Obwohl ich gesehen habe, dass es einen C99 ANSI Standard gibt. Aber auch mit "-std=c99" läuft es. Also bleibe ich dabei. Mal abwarten ob es dadurch zu Problemen kommt. Danke fricky!
-
ANSI C und ISO C ist das Selbe, nur von unterschiedlichen Standardisierungsorganisationen herausgegeben. "ANSI C" meint normalerweise C89, weil dieser Standard zuerst vom ANSI veröffentlicht wurde und erst danach von ISO übernommen wurde. Beim gcc ist -ansi daher gleichbedeutend mit -std=c89.
Da du //-Komentare magst, möchtest du wohl -std=c99 verwenden.
Wenn du mit weder -ansi noch -std=irgendwas kompilierst, lässt der gcc auch allerhand GNU-Erweiterungen jenseits des Standards zu, die zwar gelegentlich praktisch aber eben nicht portabel sind.
Wenn du standardkonform programmieren willst, nimm auch noch -pedantic.
Den Status der C99-unterstützung des GCC sieht man auf http://gcc.gnu.org/c99status.html.
-
Danke ihr beiden, dass war sehr hilfreich. Besonders auch die Übersicht, aus der ich entnahm, dass der GCC zu zirka 80% aller Funktionen dem C99 Standard entspricht. Dass ihr diese Aussage sofort anfechten könnt, ist mir klar. Damit habe ich mich nicht mehr beschäftigt als die verlinkte Seite anzuschauen. Erst ein Mal sollte ich Grundkenntnisse im Programmieren aufweisen um Diskussionen über Standards führen zu können.
Tim