![]() |
|< 1 2 3 >| | ![]() |
25 Einträge, 3 Seiten |
Quotevoid 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
![]() |
|< 1 2 3 >| | ![]() |
25 Einträge, 3 Seiten |