`main' must return `int'
-
#include <iostream.h> // for cout
class Cat // declare the class object
{
public: // members which follow are public
int itsAge;};
void main()
{
Cat Frisky;
Frisky.itsAge = 5; // assign to the member variable
cout << "Frisky is a cat who is " ;
cout << Frisky.itsAge << " years old.\n";
return 0;
}Error: `main' must return `int'
Das ist von einem tutorial, und sollte eigentlich correkt sein.
Kann mir da jemand weiterhelfen?
-
Es ist aber nicht korrekt. Was auch nicht weiter verwunderlich ist, da 90% aller Tutorials Mist sind.
-
wie die Fehlermeldung bereits erklärt muss es
int main () {/*...*/}
heißen
-
Ich weiß nicht, aber vllt sollte das in die FAQ. Kommt in letzter Zeit gehäuft vor, dieses "void main()" statt "int main()".
Code-Hacker
-
Steht aber afaik schon drin.
-
C++-Kurs von Volkard Henkel:
Lektion 2:
Das erste Programm
Als erstes Programm werden wir ein sehr, sehr einfaches Programm schreiben.
[/cpp]
void main()
{
};
[cpp]
Dieses Programm ist aber auch sehr, sehr langweilig. Es tut nämlich nichts. Aber es ist ein guter Anfang, um komplexere Programme zu schreiben.Da braucht man sich nicht wundern, wenn selbst prominente Forumsmitglieder dies verbreiten.
-
.. schrieb:
C++-Kurs von Volkard Henkel:
Lektion 2:
Das erste Programm
Als erstes Programm werden wir ein sehr, sehr einfaches Programm schreiben.
[/cpp]
void main()
{
};
[cpp]
Dieses Programm ist aber auch sehr, sehr langweilig. Es tut nämlich nichts. Aber es ist ein guter Anfang, um komplexere Programme zu schreiben.Da braucht man sich nicht wundern, wenn selbst prominente Forumsmitglieder dies verbreiten.
warum überseht ihr nur immer http://www.volkard.de/vcppkold/klasse_nimmspiel__void_main_oder_int_main.html ?
-
Der Compiler dürfte void schon zulassen (so wie beschrieben), aber dann sollte da halt kein return 0 stehen...
-
volkard schrieb:
warum überseht ihr nur immer http://www.volkard.de/vcppkold/klasse_nimmspiel__void_main_oder_int_main.html ?
Weil int/void main() das erste (einzige?) Mal bei Lektion 26 mit
"
Einsendungen:
void main() oder int main()
"
erwähnt wird.
-
Da steht ausserdem, dass es im Grunde egal sei, was es nicht ist, weil GCC void main nicht frisst.
-
Code-Hacker schrieb:
Kommt in letzter Zeit gehäuft vor, dieses "void main()" statt "int main()".
nein, das kam schon immer vor und wird wahrscheinlich auch noch ne zeitlang vorkommen. woher kommt das eigentlich?
-
Wie schon gesagt, einige Compiler lassen viod zu, auch wenn es gegen die Konvention verstößt.
Das hat sich dann irgendwann mal eingeschlichen, sicher durch eine halbherzige Einführung in C/C++, und wurde dann von diesen Leuten weiterverbreitet.Es gibt nun wohl keinen einfachen Weg mehr diesen Fehler zu beseitigen, daher kann man den Leuten, die deshalb eine Frage stellen nur sagen: "Macht es richtig! Und das geht nur mit int."
-
-
den C Standard hab ich leider nicht zum überprüfen. aber wir sind hier ja schließlich auch nicht im C Forum
-
@Volkard: Kommst Du nicht mehr an Deine Internetseiten ran, oder warum kann man den ansonsten brauchbaren C++-Kurs nicht wenigstens an wichtigen Stellen dem Gang der Zeit anpassen?
-
Bashar schrieb:
Da steht ausserdem, dass es im Grunde egal sei, was es nicht ist, weil GCC void main nicht frisst.
hab keine gcc.exe auf der platte.
-
void legt ein undefiniertes Verhalten an den Tag, deshalb kann es vorkommen das es compiler gibt die das zulassen und welche die es nicht zulassen.
schaut euch das an:
http://forum.c-plusplus.net/viewtopic.php?t=39346
-
nicht undefiniert. Implementationen können auch andere Rückgabewerte zulassen (sogar std::string oder double oder wer weiss was :)). Nur ist man so eben nicht zu anderen Compilern kompatibel und warum wegen einmal int anstelle void schreiben solche Inkompatiblitäten riskieren?
-
volkard schrieb:
hab keine gcc.exe auf der platte.
Ich auch nicht :p Aber irgendwie werd ich das Gefühl nicht los du hast diese Antwort erwartet.
-
toll. und wenn ich dann ein programm hier mit void main kompilieren will geht's nicht. immer auf die minderheiten
-
Da im Standard schon das "return 0;" überflüssig ist, sollte man vielleicht im nächsten Standardisierungsschritt einfach das zugehörige "int" auch noch "automatisieren". Dann wäre das Thema vielleicht erledigt.
main() { // anything }
Sieht doch hübsch aus?