Probleme mit 'make'
-
hdi schrieb:
In meinem Programm steht ja:
int c = argc-1; for(c;c >0;c++)
wenn ich allerdings die erste Zeile weglasse und statt dessen schreibe:
for(int c = argc-1;c>0;c++)
dann kommt eine fehlermeldung beim compilen:
P-1-2.c: In function ‘main’: P-1-2.c:8: error: ‘for’ loop initial declaration used outside C99 mode
Dann übersetzt Du den Code im C89-Modus (bei gcc glaube ich auch der Standardmodus). Da kannst Du Variablen im Kopf der Schleife nicht definieren. Aber der andere Code war soweit vollkommen in Ordnung. Du hättest lediglich das "Statement without effect" wegnehmen müssen:
int c = argc-1; for( ; c >0; c++)
Und noch einmal, ich schwöre es ist wirklich so:
Wenn ich das Programm compile mit gcc dann kommt NICHTS.
keine warnmeldung.Hast Du im Makefile evtl. -Wall gesetzt, und manuell nicht?
nun, wie dem auch sei: was soll das mit dem "outside C99 mode"?
Wie gesagt, diese Form der Definition im Kopf der Schleife ist erst in C99 (oder C++) möglich, nicht in ANSI C 89. Du kannst aber (entsprechend neue Version vorausgesetzt) auch dem gcc mit dem Parameter --std=c99 C99 beibringen.
-
hdi schrieb:
wenn ich allerdings die erste Zeile weglasse und statt dessen schreibe:
for(int c = argc-1;c>0;c++)
Probier mal
int c; for(c = argc-1;c>0;c++)
Kleiner Tip: wenn du mal nicht weiterkommst mit Fehlermeldungen: copy&paste bei google, und meistens bist du sehr schnell etwas schlauer geworden
-
Hast Du im Makefile evtl. -Wall gesetzt, und manuell nicht?
Jetzt endlich verstehe ich auch, wieso das alles mit make nix zu tun hat!
Ich wusste nicht, dass gcc standartmässig nicht -Wall aufruft.
Und weil mir make Meldungen ausgegeben hat, gcc aber nicht, dachte ich eben,
es liegt am Makefile.p.s.: Kann man -Wall irgendwie zum Standard bei gcc machen?
Ich würde diese Option sehr gerne nutzen, aber ohne jedesmal den Parameter anzugeben.p.p.s: Wieso wird denn Standar-t vom Forum zensiert? was ist denn so schlimm am
Begriff "dar-t"mfg, ihr seid echt spitze!
-
hdi schrieb:
p.p.s: Wieso wird denn Standar-t vom Forum zensiert? was ist denn so schlimm am
Begriff "dar-t"An dem Spiel, wo man mit Pfeilen auf eine Zielscheibe wirft, ist nichts verkehrt - aber der Begriff Stand-art könnte doch eher die Kunst bezeichnen, Messestände kunstvoll zu gestalten. Es ist halt einfach falsch, so wie vor-raus
-
-
Das meinte ich ja auch!
Ich dachte mir halt: wenn schon etwas compilen, warum dann nich auch gleich noch n schöner Messestand.
-
hdi schrieb:
In meinem Programm steht ja:
int c = argc-1; for(c;c >0;c++)
Du zählst tatsächlich von argc-1 nach oben, bis du zu einem Integer-Überlauf kommst? Na ob das im Sinne des Erfinders liegt?
-
nein, ich dekrementier.
habs nur falsch eingetippt.
-
nochmal um auf meine frage zurückzukommen, die noch nicht beantwortet wurde
(hat damit eig. nix mehr zu tun will aber keinen neuen thread aufmachen deshalb):kann ich irgendwie den parameter -Wall für gcc als Standard einstellen, sodass ich ihn nicht immer zusätzlich eintippen muss?
danke
-
Zumindest ich kenne keine globale
Konfigurationsmöglichkeit für den gcc.echo "alias gcc='gcc -Wall'" >> ~/.bashrc
Sollte jedoch funktionieren.
-
make install install maker