void main muss sterben!!!!
-
Warum sollte eine Warnung kommen wenn das laut Standard völlig legal ist?
-
Muss man nach dem Standard auch nicht. Kein Return führt zu return 0.
void main sollte zum gleichen Ergebnis führen, dann kann man sich diese unendlichen Diskussionen sparen.
MfG SideWinder
-
Hätt ja nicht gedacht, dass mir das auf meine alten Tage noch mal passiert, aber ich muss SideWinder 100% recht geben.
-
Hehe Side, solange es noch genug Leute gibt, die auf solche Diskussionen einsteigen

Die Animation jedenfalls ist hübsch.
-
irgendwas werden die schreiber des standarts sich schon dabei gedacht haben
-
SideWinder schrieb:
Muss man nach dem Standard auch nicht. Kein Return führt zu return 0.
void main sollte zum gleichen Ergebnis führen, dann kann man sich diese unendlichen Diskussionen sparen.
MfG SideWinder
Tjo ist eben so festgelegt dass es int main() heißt wie die Größe vom A4-Papier festgelegt ist. Man könnte es auch anderst machen, macht man aber nicht.
-
Optimizer schrieb:
Besser wäre es, void main() zu erlauben anstatt int main() ohne return zu erlauben.


^^ganz meine meinung
-
Optimizer schrieb:
Besser wäre es, void main() zu erlauben anstatt int main() ohne return zu erlauben.

FULL ACK

-
net schrieb:
Optimizer schrieb:
Besser wäre es, void main() zu erlauben anstatt int main() ohne return zu erlauben.


^^ganz meine meinungVoid würde aber kein Sinn ergeben. Die Funktion main() gibt _immer_ einen Wert zurück....
-
FireFlow schrieb:
Die Funktion main() gibt _immer_ einen Wert zurück....
an wen?
-
an das betriebssystem
-
otze schrieb:
an das betriebssystem
und wenn ich keins habe? was soll ich z.b. mit einem rückgabewert von main anfangen, wenn main nie verlassen wird?
-
Wenn du eine Exe ausführst, bekommst du als Aufrufer einer solchen einen "Errorcode" zurück. So kannst du z.B. eine Batchdatei schreiben die je nach Errorcode reagieren kann.
Und Errorcode 0 heißt immer "Alles i.O.". Und das gibt int main() ohne return-code auch immer zurück.
-
net schrieb:
otze schrieb:
an das betriebssystem
und wenn ich keins habe? was soll ich z.b. mit einem rückgabewert von main anfangen, wenn main nie verlassen wird?
Du hast ja immer irgendwie ein Stück Code, das main ausführt, oder? Ob du den Errorcode entgegen nimmst, ist nicht das Problem von ISO-Standard.
-
soweit ich mich erinnere, wird zb bei einem aufruf von assert oder unbehandelten ausnahmen ein anderer rückgabewert als 0 zurückgegeben, wenn man das programm mit createProcess unter windows gestartet haben sollte, sollte dann getLastError "ERROR_PROCESS_ABORTED" liefern.
und ich denke, die meisten programme laufen immernoch auf nem betriebssystem, sodass der rückgabewert gerechtfertigt ist.
-
-sinnvoll- schrieb:
irgendwas werden die schreiber des standarts sich schon dabei gedacht haben
Nach dem Standard ist es kein gültiges C++-Programm, aber es gibt ja auch Leute, die nicht nach HTML/XML-Standard ihre Seiten entwerfen, sondern sie auf bestimmte Eigenheiten der Browser anpassen, sodass sie nicht mehr standardkonform sind. Beim Programmieren ist das ja ähnlich. Manche wollen ja gar nicht standardkonform programmieren und sind zufrieden, wenn sie ein funktionsfähiges ausführbares Image haben unabhängig davon, dass sich irgendwelche anderen Compiler über den Quelltext hätten beschweren können.
Wenn man plattform- und compilerübergreifend programmiert, ist es natürlich unerlässlich, dass man sich an einen gewissen, wenn nicht sogar DEN C++-Standard hält.
Oftmals wirkt es auf mich aber nur so, dass dieses void/int main-Ding als Prestigeobjekt benutzt wird und die Rangebene der Programmierer anhand der Standardkonformität gemessen wird.
-
Artchi schrieb:
Du hast ja immer irgendwie ein Stück Code, das main ausführt, oder? Ob du den Errorcode entgegen nimmst, ist nicht das Problem von ISO-Standard.
genau, deshalb
c standard schrieb:
In a freestanding environment (in which C program execution may take place without any
benefit of an operating system), the name and type of the function called at program
startup are implementation-defined.darf ich auch 'void main()' schreiben

-
aber nur in C, und um welche Sprache geht es hier? :p
-
otze schrieb:
aber nur in C, und um welche Sprache geht es hier? :p
naja, im cpp standard steht ähnliches, 3.6.1 absatz 1. hätt' mich auch gewundert wenn nicht.
-
ne, 3.6.1-1 meinst du nicht. Da steht nur, dass je nach Umgebung keine main funktion existieren muss, sondern dass der eintrittspunkt implementations abhängig ist.
was du meinst ist 3.6.1-2. da steht aber auch nur, dass der rückgabewert int sein sollte, sonst ist es implementations abhängig.
//edit damit darfst du nur void main() schreiben, wenn das betriesbssystem das haben will, sonst nicht