Thread Hello World: Meine ersten Gehversuche (24 answers)
Opened by format_c at 2003-09-09 23:51

SirLant
 2003-09-10 14:06
#11141 #11141
User since
2003-08-04
516 Artikel
BenutzerIn
[default_avatar]
Und übrigens void main ist verboten, das lassen nur Compiler
zu die sich nicht an die Standards halten, hatte erst ne Diskussion
in nem anderen Board, hier mal nen paar Auszüge:
Quote
void main ist flasch... basta (will jemand die entsprechenden Paragraphen aus dem C-Standard raussuchen?). Nur weil es ein paar kaputte Compiler gibt, die void main akzeptieren, ist es noch lange nicht richtig. Der Rückgabewert von int main ist gleichzeitig der Exitcode des zugehörigen Prozesses. Insbesondere Microsoft-Compiler liefern irgendeinen zufälligen Mist als Exitcode zurück, wenn man void main verwendet. Also => int main.

Ich hab's irgendwann mal ausprobiert, ein void main führt z. B. bei MS (oder war's Intel?) C++ zu einem Programm, das seinen Exitcode nicht korrekt setzt. Ist auch nicht weiter verwunderlich, wenn man sich das ganze mal auf Asm-Ebene anschaut. Der Rückgabewert einer Funktion wird, soweit er reinpasst, im Register EAX gespeichert. Wenn void main() endet steht irgendwelcher Müll in EAX, eben das, was zuletzt drin abgelegt wurde. Die CRT macht da keinen Unterschied und nimmt diesen Müll dann als Exitcode.

Hier noch nen Link zu dem Thema
http://faq.cprogramming.com/cgi-bin....3284376

Ein C++-Tutorial, das keine solche extremen Fehler enthält:
http://www.schornboeck.net/ckurs/
--Programming today is a race between Software Enginers striving to build bigger and better idiot-proof Programs,
and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!

View full thread Hello World: Meine ersten Gehversuche