• 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

  • 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;
    }
  • 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]
    }
  • 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*

  • 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

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

    [/edit]

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

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

  • Kampi
    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. ;)

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


    Dank' Euch, sehe jetzt klarer.

    Gruß
    Matt

Jetzt mitmachen!

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