- LiFePO4 Speicher Test         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: main (Anfänger)

  1. #1

    main (Anfänger)

    Anzeige

    Praxistest und DIY Projekte
    Hallo

    also es ist schon etwas irritierend für einen Anfänger.
    In manchen C-Büchern wird nur main() benutzt, einige benutzen void main(), und wieder andere bevorzugen int main(void)...
    Gibt es noch mehr Variationen?????
    Wenn ja, welche???

    Kann mir jemand deren Bedeutung erklären??
    Habe es leider nicht verstanden

    Gruß

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    die korrekte vollständige Schreibweise lautet: int main(int argc, char* argv[])

    int main() geht auch noch

    void main() ist eigentlich falsch


    edit:
    und ob man jetzt main() oder main(void) schreibt ist relativ egal
    So viele Treppen und so wenig Zeit!

  3. #3
    Gast
    In einem avrgcc-Programm einfach
    int main (void) {
    //some stuff
    }

    return 0 oder ähnliches kannst du dir schenken, das fügt der Compiler ein. Im Normalfall bleibt dein Programm eh irgendwo in einer Endlosschleife hängen.

    for (; {
    //do something
    }

    oder

    while (1) {
    //do something
    }

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    *verlässtfluchtartigdenraum*
    WAAAAAAAAAAHHHHHHHHHHHH!!!!!!!
    *kommtetwasblassaberberuhigtzurück*


    Also,
    es stimmt zwar, daß die meisten Compiler es nicht so genau nehmen...
    aber ich glaube manchmal wäre es, schon aus erzieherischen Gründen, besser wenn sie es täten.

    Man sollte grundsätzlich immer darauf achten, korrekt zu programmieren.
    Denn wenn man dann irgendwann, warum auch immer, ein fertiges Programm mit einem anderen Compiler kompilieren muss, kann man sich sicher sein daß es funktionieren wird.
    So viele Treppen und so wenig Zeit!

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Kann mich @Felix G mit meiner Meinung nur anschließen:

    Bei int main () MUß return 0; (oder eine andere integer-Zahl oder Ausdruck) beim Verlassen der main-Funktion stehen. Denn der Rückgabewert der main-Funktion ist int!

    Das korrekte, einfachste Programm wäre demnach:

    Code:
    int main (void)
    {
      return 0;
    }
    Statt der 0 könnte auch eine beliebige Funktion stehen, die ebenfalls einen int als Rückgabewert hat. Als Abwandlung zum bekannten "Hello world" kann man das dann so schreiben:

    Code:
    #include <stdio.h>
    
    int main (void)
    {
      return (printf ("Hello world"));
    }
    printf gibt einen int zurück, die Anzahl der Zeichen, die auf stdout ausgegeben wurden.
    Einrückungen und Zeilenorientierungen sind "Geschmacksache".


    Blackbird

  6. #6
    Gast
    Da es mir Jörg Wunsch so gesagt hat (welcher einer der Urheber von avr-gcc ist), werde ich meine Methodik trotzdem beibehalten. Ich hatte auf mikrocontroller.net einmal ein rein interruptbasiertes Programm reingestellt, und dort wurde mir gesagt, dass ich mir Endlosschleife und return 0 schenken kann. Ist in meinen Augen auch irgendwo logisch, denn welche Funktion soll denn das return der main () auswerten? Endlosschleife und return werden vom Compiler selbständig eingefügt.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    09.08.2004
    Alter
    45
    Beiträge
    77
    hmm wieso soll
    void main() falsch sein
    in c wirds doch fast immer verwendet und es funktioniert doch ohne fehler?
    *verwirrtbin*
    ---

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    @D.Stolarek:
    http://www.c-plusplus.de/forum/viewtopic.php?t=39346

    @Gast:
    Es geht um portablen Code nach ANSI-Standard. Wenn avr-gcc sich nicht daran hält, ist es noch lange kein Grund, es nur so zu machen.

    Wie Du es machts, ist völlig egal, in Deinem Falle aber falsch.


    Blackbird

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    41
    Beiträge
    1.780
    eben...

    die meisten Compiler halten sich nicht genau an den Standard, und akzeptieren Code der eigentlich nicht korrekt ist.

    Das hat mit dazu beigetragen, daß viele Leute einfach falsch programmieren.
    Denn wenn man C lernt, und man erfährt alles mögliche über Funktionen, Rückgabewerte etc.
    dann fällt es anfangs vielleicht schwer zu verstehen warum auch main einen Rückgabewert hat.

    Also wird das einfach unter den Tisch gekehrt, und fast jedes Buch, oder jeder Lehrer fängt einfach mit void main() an.
    Denn es funktioniert ja...
    Der Compiler frisst den Code, die meisten geben nichtmal eine Warnung aus.

    Aber wie gesagt...
    Darauf kann man sich nicht verlassen.

    Man lernt ja nicht "C für gcc" oder "C++ für Visual C++"...
    man lernt C bzw. C++ allgemeingültig für jeden beliebigen standardkonformen Compiler.
    So viele Treppen und so wenig Zeit!

  10. #10
    Gast
    wie bekomme ich werte, die in
    int main(int argc, char argv)
    werte Übergeben, die ich nachher ausgeben kann?

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress