Hello World



  • 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. 🙄



  • In jeden Fall ist den Programm falsch:

    #include <stdio.h>
    
    int main()
    {
        printf( "Hello World!\n" );
    }
    

    Besser!



  • ah danke, steht das

    #include <stdio.h>
    

    immer am anfang und das int vor main?

    ich hab das aus einem tutorial und das sieht so aus, woher soll ich das dann wissen? Es heißt Softwareentwicklung in C.

    Auszug:
    http://img261.imageshack.us/img261/9928/ilouq6.jpg



  • Immortalis schrieb:

    ah danke, steht das

    #include <stdio.h>
    

    immer am anfang und das int vor main?

    ich hab das aus einem tutorial und das sieht so aus, woher soll ich das dann wissen? Es heißt Softwareentwicklung in C.

    Auszug:
    http://img261.imageshack.us/img261/9928/ilouq6.jpg

    stdio steht für Standard-Input-Output, da du also etwas ausgeben willst( Output ) musst du mit der #inclue Anweisung diese Datei ( stdio.h ) einbinden. Ich weiß nicht, obs bei C vorgeschrieben ist das int davor zu schreiben, jedoch bist du auf der sicheren Seite wenn du es tust. Ein int ist jedenfalls ein Zahlenwert 🙂



  • OK, vielen Dank für deine Hilfe 👍



  • 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 einklammert

    char 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...
    🙂


Anmelden zum Antworten