Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuling Frage zu gcc
Hi,
ich bin gerade dabei C zu lernen. So wenn ich nun meine programme mit gcc compiliere, bekomme ich jedesmal die meldung:
warning: return type of 'main' is not 'int'
Warum??
THX für eure Hilfe
Chaos2k
naja die Mainfunktion braucht ja auch einen Rückgabe wert, wenn du also dein Programm ordnungsgemäss beendest solltest du es vielleicht mit return 0; machen also
int main()
{
.......
return 0;
}
Hi also die Progs aus meinenm Buch sind aber so aufgebaut:
void main()
{
anweisungen
}
also int kommt überhaupt nicht vor.
MFG chaos2k
anda_skoa
11-01-2003, 16:54
Das ist noch code aus der Ära vor dem C Standard.
Standardkonforme C Programme haben ein int main.
Ciao,
_
also das buch ist von '98, seh ich grad, kann ssein das es daran liegt, thx noxhmal
sven1978
11-01-2003, 19:22
Also ich compiliere auch mit gcc und schreibe nur:
main()
{
}
aber:wenn kein rueckgabewert angegeben wird macht das der compiler selber zu int. Also ist es egal.Bei
void main()
duerfte dir das eigentlich nicht passieren weil void "nichts"bedeuted.
Eigentlich duerfte keine meldung kommen.
kommt aber. Das ist ja das Komische, weil wenn nichts zurückgegeben wird muß der Typ doch nicht int sein :D naja
MFG chaos2k
Das "void main()" in Deinem Buch liegt nicht am Alter desselbigen, sondern wahrscheinlich daran, daß der Verfasser hauptsächlich in Windows mit VC programmiert und da ist "void main" gängige Praxis. Microsoft hält sich halt ungern an Standards.
anda_skoa
12-01-2003, 11:24
Original geschrieben von sven1978
Also ich compiliere auch mit gcc und schreibe nur:
main()
{
}
aber:wenn kein rueckgabewert angegeben wird macht das der compiler selber zu int. Also ist es egal.
Wenn kein Rückgabetyp angegeben ist, wird immer int angenommen.
Das sieht man auch, wenn man ein include vergisst.
Dann gibt es eine Warnung, dass eine int Funktion "implicit" deklariert wurde.
void main()
duerfte dir das eigentlich nicht passieren weil void "nichts"bedeuted.
Eigentlich duerfte keine meldung kommen.
Natürlich kommt da die Meldung, denn void != int und int muss es sein :)
ciao,
_
anda_skoa
12-01-2003, 11:25
Original geschrieben von Chaos2k
kommt aber. Das ist ja das Komische, weil wenn nichts zurückgegeben wird muß der Typ doch nicht int sein :D naja
Das ist ansich richtig, aber main gibt ja was zurück und darum muss der Typ auch int sein.
Ciao,
_
sven1978
12-01-2003, 11:36
Also weiss net was ihr alle habt.
Bei mir kommt bei gcc kein fehler(Warnung in diesem Fall)
Ich schreibe:
main()
{
}
ich hatte schon bei borland den fall das eine warning kommt
anda_skoa
12-01-2003, 12:09
Original geschrieben von sven1978
Also weiss net was ihr alle habt.
Bei mir kommt bei gcc kein fehler(Warnung in diesem Fall)
Ich schreibe:
main()
{
}
ich hatte schon bei borland den fall das eine warning kommt
Klar, weil du nichts angegeben hast, nimmt der Compiler implizit int an und dass ist auch richitg für main.
Ciao,
_
sven1978
12-01-2003, 12:34
ja schon aber will er dann nicht ein return?
anda_skoa
12-01-2003, 15:00
Nein, bei main wird ein return 0 hinzugedacht, wenn das return fehlt.
Ciao,
_
ist aber alles sehr unsauber wie ihr programmiert.
sven1978
12-01-2003, 16:34
Ja wenn das return 0 dazugedacht wird passt es ja das beim compelieren kein warning kommt. Kommt aber auch bestimmt auf den compiler an.
anda_skoa
12-01-2003, 16:58
Original geschrieben von sven1978
Ja wenn das return 0 dazugedacht wird passt es ja das beim compelieren kein warning kommt. Kommt aber auch bestimmt auf den compiler an.
Ich glaube, dass ist im Standard so definiert.
Kann aber nicht schaden, return 0 hinzuschreiben.
Ciao,
_
Original geschrieben von anda_skoa
Kann aber nicht schaden, return 0 hinzuschreiben.
vor allem sieht es besser aus :)
anda_skoa
12-01-2003, 17:09
Original geschrieben von JoelH
vor allem sieht es besser aus :)
Vorallem erinnert man sich dann, dass man bei einem Abbruch wegen eines Fehlers, return fehlercode machen kann :)
Ciao,
_
Ich denke mal, dass es am Besten ist, wenn man es richtig macht und nicht so wie es in irgendeinem Buch steht.
int main()
{
...
return 0;
}
Original geschrieben von Boron
Ich denke mal, dass es am Besten ist, wenn man es richtig macht und nicht so wie es in irgendeinem Buch steht.
int main()
{
...
return 0;
}
sagte ich auch schon :)
Original geschrieben von JoelH
naja die Mainfunktion braucht ja auch einen Rückgabe wert, wenn du also dein Programm ordnungsgemäss beendest solltest du es vielleicht mit return 0; machen also
int main()
{
.......
return 0;
}
;) ;)
na wenn du zum schluss return 0; machst gibst du eine Null zurück, das heißt, dass deine Mani als Rückgabewert auch ein Integer haben muss.
avuton
ansonsten muss es void main()heißen dann darfst du aber auch kein return haben und dann gibt die Funktion nichts zurück
anda_skoa
14-01-2003, 10:09
Original geschrieben von avuton
ansonsten muss es void main()heißen dann darfst du aber auch kein return haben und dann gibt die Funktion nichts zurück
void main kann sie aber nicht heißen, weil es nach dem C Standard int main heißen muss :)
Außerdem kann man auch in einer void Funktion return benutzen, nur halt ohne Parameter.
Außerdem wollte JoelH ja nur darauf hinweisen, dass, auch wenn man bei main das return 0 am Ende weglassen kann, es wesentlich sauberer ist, es hinzuschreiben.
Ciao,
_
Danke für eure hilfe,
ich machs jetzt so wie sagtet mit in main und return 0, keine Fehler oder sonstiges
THX Chaos2k
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.