1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Peil es nicht

  • Matt_informatic
  • 7. November 2007 um 19:20
  • Unerledigt
  • Matt_informatic
    5
    Matt_informatic
    Mitglied
    Punkte
    190
    Beiträge
    27
    • 7. November 2007 um 19:20
    • #1

    Hi,

    ich habe folgenden Code in Dev-C++ eingegeben und schaffe es nicht,
    das das "Programm" kompiliert wird.

    --------------------------
    /* Test01 */
    #include <stdio.h>
    void main ()

    {
    int ch;

    for (ch=32;ch<=255;ch++)
    printf("\n%i %c", ch, ch);
    }

    --------------------------

    Die Fehlermeldung von Dev-C++ ist:
    "::main' must return 'int'

    Äh, ja?!?!

    Was habe ich hier falsch gemacht?

    Danke für Infos.

    Gruß
    Matt

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 7. November 2007 um 19:41
    • #2

    steht ja schon in der fehlermeldung oder nicht?

    PHP
    int main()
    {
      return 0;
    }



    und normalerweise sollts mit Parameter sein

    PHP
    int main(int argc, char **argv)
    {
      return 0;
    }
  • Paulchen
    1
    Paulchen
    Gast
    • 7. November 2007 um 19:42
    • #3
    Code
    [COLOR='Red']int[/COLOR] main([COLOR='Red']int argc, char **argv[/COLOR]) {
        int ch;
    
    
        for (ch=32;ch<=255;ch++)
        printf("\n%i %c", ch, ch);
    
    
        [COLOR='Red']return 0;[/COLOR]
    }
  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 7. November 2007 um 20:20
    • #4
    Zitat von lerod

    und normalerweise sollts mit Parameter sein


    Braucht man nicht, wenn man sie nicht braucht. Sozusagen.

    Code
    int main(void)
    {
        return 0;
    }

    BTW: C-Programme sollte man nicht mit einem C++-Compiler kompilieren.

    *plantsch*

  • Matt_informatic
    5
    Matt_informatic
    Mitglied
    Punkte
    190
    Beiträge
    27
    • 13. November 2007 um 19:43
    • #5

    Hi,

    ja, mit

    Code
    int main(void)
    {
        return 0;
    }


    geht es.

    Wie "versteht" man nur die Unterschiede am Anfang, wenn man programmieren lernt?

    Danke.

    Gruß
    Matt_informatic

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 13. November 2007 um 21:56
    • #6
    Zitat von Matt_informatic

    Wie "versteht" man nur die Unterschiede am Anfang, wenn man programmieren lernt?


    Die Unterschiede zwischen C und C++, meinst du? Am besten gar nicht. Eine der Sprachen aussuchen (z.B. durch Würfeln), ein gutes Buch und den richtigen Compiler nehmen und sich erst um die Unterschiede kümmern, wenn man die andere Sprache lernt. So man das überhaupt will.

    *plantsch*

  • Matt_informatic
    5
    Matt_informatic
    Mitglied
    Punkte
    190
    Beiträge
    27
    • 14. November 2007 um 19:54
    • #7

    Naja, ich habe nun noch eine Variante in einem C Buch gefunden:

    Code
    void main(void)

    Aber da gibt es auch kein:

    Code
    Return 0;

    Das verwirrt, finde ich.

    Im moment geht es darum C zu lernen und finde verschiedenes darüber.

    Ist das Compiler abhängig?

    Woher kommt das?

    Oder gibt es verschiedene Versionen von C?

    Also nicht C++, sondern C v1.0?

    Das ist das, was mich verwirrt.

    Die Programme erstell ich mit dem Dev-C++.

    Gruß
    Matt

  • Kampi
    27
    Kampi
    Mitglied
    Reaktionen
    193
    Punkte
    7.828
    Beiträge
    1.468
    • 14. November 2007 um 19:59
    • #8

    das verwirrt nicht wirklich.
    wenn du die "main" zu "void" machst ("void main(egal_was_hier_ist)"), dann kannst du keinen wert zurueck geben, sprich auch keinen 0er, was du aber durch "return 0;" machen wuerdest. willst du einen wert zurueck geben, dann muszt du eben main so deklarieren. "0" ist ein integer => "int main(egal_was_hier_ist)".

    ein bissl klarer geworden?

    [edit]
    "return;" alleine kannst du auch in void-funktionen verwenden, das ist erlaubt. zum beispiel um sie vorzeitig zu verlassen:

    Code
    void myfunc()
    {
       if (fucked_up)
          {
             return;
          }
       else
          {
             //do the magic
          }
    return; //brauchst du nicht umbedingt
    }
    Alles anzeigen

    [/edit]

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 15. November 2007 um 09:56
    • #9
    Zitat von Matt_informatic

    Naja, ich habe nun noch eine Variante in einem C Buch gefunden:

    Code
    void main(void)


    Das ist nicht eine der Formen, die vom C-Standard vorgeschrieben sind. Viele Compiler akzeptieren das, andere nicht, oder sie erzeugen falschen Code. Zum Beispiel kann es sein, daß ein undefinierter Fehlerstatus von deinem Programm zurückgegeben wird. Lies ein Buch, das dir zu void main rät, nicht weiter, denn der Autor weiß nicht genug über C, um das zu wissen; es gibt genug gute Bücher.

    Zitat

    Im moment geht es darum C zu lernen und finde verschiedenes darüber.

    Ist das Compiler abhängig?

    Woher kommt das?

    Oder gibt es verschiedene Versionen von C?


    Es gibt zwei Versionen von C, nämlich C89 (manchmal auch C90 genannt) und C99. (Es gibt sogar noch C95, das ist aber bis auf winzigste Details identisch mit C89.) Allerdings gilt für beide Versionen: Die anerkannten Formen von main sind "int main(void)" und "int main(int argc, char **argv)". (Wobei man "char **argv" auch als "char *argv[]" schreiben kann.) In C89 kann man das int und den Teil in den Klammern weglassen, da ist also auch "main()" erlaubt. Allerdings ist das ein Stil, zu dem seit 20 Jahren nicht mehr geraten wird.

    Compiler dürfen prinzipiell auch andere Formen unterstützen, aber es ist ihre Sache, was sie damit tun. Wenn du auf einen anderen Compiler oder auch nur eine etwas andere Version des selben Compilers wechselst, kann es schon sein, daß dein Programm nicht mehr funktionieren wird!

    Halte dich an den Standard. Es gibt oft sehr sehr gute Gründe, sich nicht an den Standard zu halten, aber die Deklaration von main ist kein Grund.

    Zitat

    Die Programme erstell ich mit dem Dev-C++.


    Achte darauf, daß du den C-Modus verwendest, wie immer das geht. Und möglichst alle Warnungen und Fehlermeldungen einschalten, du willst so viel über dein Programm wissen wie nur möglich.

    *plantsch*

  • Matt_informatic
    5
    Matt_informatic
    Mitglied
    Punkte
    190
    Beiträge
    27
    • 15. November 2007 um 21:04
    • #10

    Almresl
    Vielleicht verwirrt das einen Erfahrenen Programmierer nicht, aber einen Anfänger schon.
    Da er die Zusammenhänge nicht erkennt. Wie auch? Fehlt doch noch wissen dazu.

    Aber Eure Erklärungen haben es deutlich gemacht.

    @Pantschkuh

    Zitat


    Viele Compiler akzeptieren das, andere nicht, oder sie erzeugen falschen Code.

    Tja, das ist das, was vermutlich jeden Anfänger verwirrt. Kurzzeitig. :winking_face:

    Weisst Du, wie ich Dev-C++ korrekt einstelle? Oder einen Link?


    Dank' Euch, sehe jetzt klarer.

    Gruß
    Matt

  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung