void main muss sterben!!!!
-
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
-
otze schrieb:
//edit damit darfst du nur void main() schreiben, wenn das betriesbssystem das haben will, sonst nicht
ok, und wenn ich kein os habe kann ich das selbst bestimmen (bzw. der compilerhersteller). dann ist ja wieder alles gut

-
omg, wenn ich das hier so lese...
man sollte bei void dann natürlich implizit den Compiler den Code für die Rückgabe von 0 generieren lassen. Es ist doch nur affig, so inkonsequent zu sein und int main() ohne return zu erlauben und void main() zu verbieten. Ihr verwickelt euch hier in technische Belanglosigkeiten. Ein Executable muss so oder so auf jedem Betriebssystem anders aussehen. Es geht hier nur um die sprachliche Inkonsequenz.
-

Ich find die diskussion eigentlich lächerlich. Wo es doch gerüchte gibt das void main() in den standard aufgenommen werden soll. Zumindest hab ich das mal irgendwo gelesen
Viel spass noch
BR
//PS: ich hab mir den Thread nicht durchgelesen, falls das schon erwähnt wurde weiß ich es nicht

-
mir gings eigentlich nur um die schöne animation
