Hello World
-
Immortalis schrieb:
Hi,
ich habe mich mit der Programmiersprache C ein wenig befasst und mir den Emacs Compiler runtergeladen.Dann habe ich das Hello World! Programm geschrieben.
main ( ) { printf ('Hello World !\ n') ; }
jetzt kommt aber immer die Fehlermeldung, dass ich irgendwo make -k einsetzen soll. Ich weiß aber nicht wo.
Emacs ist kein Compiler, sondern ein Editor. Dort in der Zeile wo make -k steht entfernst du das make -k und schreibst dort
gcc -Wall -W -std=c99 -pedantic <dateiname>
rein (<dateiname> eben mit dem Namen der Datei austauschen). Dann Enter drücken und sich freuen
-
fsdasdaasdasd schrieb:
Ich weiß nicht, obs bei C vorgeschrieben ist das int davor zu schreiben, jedoch bist du auf der sicheren Seite wenn du es tust.
Ja, es IST vorgeschrieben (der Rückgabewert der main()-Funktion findet seinen Weg als Errorcode zurück ins Betriebssystem).
-
CStoll schrieb:
fsdasdaasdasd schrieb:
Ich weiß nicht, obs bei C vorgeschrieben ist das int davor zu schreiben, jedoch bist du auf der sicheren Seite wenn du es tust.
Ja, es IST vorgeschrieben (der Rückgabewert der main()-Funktion findet seinen Weg als Errorcode zurück ins Betriebssystem).
und wenn man kein's hat
btw: kann man das 'int' nicht weglassen? ich schreib's ja auch immer hin, aber mir war so, dass funktionen ohne angabe des rückgabetyps automatisch als 'int'-zurückgeber angesehen werden...
-
pale dog schrieb:
btw: kann man das 'int' nicht weglassen?
kann man.
ich schreib's ja auch immer hin, aber mir war so, dass funktionen ohne angabe des rückgabetyps automatisch als 'int'-zurückgeber angesehen werden...
So ist es auch. Aus dem Grund soll man den Typ ja auch immer hinschreiben.
-
WOW, merci
-
Und noch was, du hast:
printf ('Hello World !\ n') ;
geschieben. Du hast den String in Hochkomma eingebunden was falsch ist, da man
mit Hochkomma nur einzelne Chars/ Bytes einklammertchar a= 'a';
String, also Ketten von Chars klammert man mit Gänsefüschen ein:)
char *a[]= "Hallo";
deswegen auch dein pritnf mit gänsefüschen, da es sich um ein String handelt:
printf ("Hello World !\ n") ;
soo.. Damit du das auch verstandne hast;)
-
BorisDieKlinge schrieb:
char *a[]= "Hallo";
char *a[]= {"Hallo"};
-
char a[] = "Hallo";
reicht aber eigentlich vollkommen
-
CStoll schrieb:
fsdasdaasdasd schrieb:
Ich weiß nicht, obs bei C vorgeschrieben ist das int davor zu schreiben, jedoch bist du auf der sicheren Seite wenn du es tust.
Ja, es IST vorgeschrieben (der Rückgabewert der main()-Funktion findet seinen Weg als Errorcode zurück ins Betriebssystem).
Es muss aber nicht unbedingt ein int zurückgegeben werden.
-
David_pb schrieb:
Es muss aber nicht unbedingt ein int zurückgegeben werden.
Das gilt aber nur für C99 (und C++). In C89 muss noch.
-
David_pb schrieb:
CStoll schrieb:
fsdasdaasdasd schrieb:
Ich weiß nicht, obs bei C vorgeschrieben ist das int davor zu schreiben, jedoch bist du auf der sicheren Seite wenn du es tust.
Ja, es IST vorgeschrieben (der Rückgabewert der main()-Funktion findet seinen Weg als Errorcode zurück ins Betriebssystem).
Es muss aber nicht unbedingt ein int zurückgegeben werden.
Bei Existenz eines Betriebsystems muss ein int zurückgegeben werden.
-
LordJaxom schrieb:
David_pb schrieb:
Es muss aber nicht unbedingt ein int zurückgegeben werden.
Das gilt aber nur für C99 (und C++). In C89 muss noch.
In C++ muss auch ein int zurückgegeben werden. Aber der C99 Standard überlässt es dem Compiler was zurückgegeben wird und wie das Verhalten ist!
-
David_pb schrieb:
In C++ muss auch ein int zurückgegeben werden.
Nö, main muss lediglich für int-Rückgabe definiert sein, das return darf fehlen.
Aber der C99 Standard überlässt es dem Compiler was zurückgegeben wird und wie das Verhalten ist!
Ist das wirklich so? Der C++-Standard gibt wenigstens noch vor, dass bei fehlendem return "0" statt "irgendwas" zurückgegeben wird.
-
LordJaxom schrieb:
David_pb schrieb:
In C++ muss auch ein int zurückgegeben werden.
Nö, main muss lediglich für int-Rückgabe definiert sein, das return darf fehlen.
Das stimmt zwar, aber das meint' ich nicht. Aber der C++ Standard sagt ganz klar das ein int Zurückgegeben werden muss. Wenn das return fehlt wird einfach "0" zurückgegeben.
LordJaxom schrieb:
Aber der C99 Standard überlässt es dem Compiler was zurückgegeben wird und wie das Verhalten ist!
Ist das wirklich so? Der C++-Standard gibt wenigstens noch vor, dass bei fehlendem return "0" statt "irgendwas" zurückgegeben wird.
Mal ein paar Auszüge aus dem Standard!
ISO/IEC 9899:TC2 schrieb:
5.1.2.2.1.1
The function called at the startup is named main. [...] It shall be defined with a return typ of int [...] or in some other implementation-defined manner.ISO/IEC 9899:TC2 schrieb:
5.1.2.2.3.1
[...] If the return type ist not compatible with int, the termination status returned to the host environment ist unspecified. [...]Also kann alles zurückgegeben werden, nur der Compiler muss es erlauben!
-
David_pb schrieb:
Aber der C++ Standard sagt ganz klar ...
was willst du mit irgend so einem c++ standard?
der hat doch mit C nix zu tun...
-
pale dog schrieb:
David_pb schrieb:
Aber der C++ Standard sagt ganz klar ...
was willst du mit irgend so einem c++ standard?
der hat doch mit C nix zu tun...
LordJaxom hat ihn doch angesprochen!