Wieso kann man "void main ()" nicht einfach standardisieren?
-
MfG SideWinder
-
Weil dann Supertux´ ABM wegfällt.
-
Warum muss man jeden Scheiss, den irgendwer falsch macht, standardisieren?
-
"irgendwer"? Man kommt bei genauerer Betrachtung sicherlich auf mehr als 25% - irgendwoher muss es ja kommen, dass nahezu jeder Compiler damit klar kommt. AFAIK baut man in Compiler noch keinen Quirks-Mode ein.
MfG SideWinder
-
Beim neuen VC++ 2005 erstellt der mir bei Konsolenprojekten imemr ne int _tmain(int argc, _TCHAR* argv[]), wieso kann man die nicht einfach standardisieren?
(Übrigens, Afaik unterstützt gcc(zumindest mingw) kein void main() mehr)
-
Warum nicht einfach angeben, dass die Funktion main heißen muss und alles andere beim Compiler liegt?
MfG SideWinder
-
FinalBlackout schrieb:
Beim neuen VC++ 2005 erstellt der mir bei Konsolenprojekten imemr ne int _tmain(int argc, _TCHAR* argv[])
Eh, es ist mittlerweile ECMA-Standard, nur halt nicht C++ sondern C++/CLI!
Du kannst einmal C++/CLI (Managed Code) Projekte anlegen, und das ist halt eine andere Standard-C++-Sprache, halt eine managed C++. Du kannst aber unter VC++ auch weiterhin C++ (Unmanaged Code) Projekte anlegen, halt die alt bekannte Sprache.
Du kannst _tmain aber durch das alt bekannte int main( int argc, char ** argv ) ersetzen, versteht VC++ ohne Mucken.
-
Ich hab aber ein win32-konsolenprojekt angelegt, da is nix mit .net. Egal, man kanns ja von hand umändern, oder gleich ein "empty project" machen.
-
Yo, hast Recht, habs ebend nochmal ausprobiert. Habe bisher immer leere Projekte angelegt.
-
_tmain ist dafür da damit man zwischen Ansi und Unicode leicht wechseln kann. Ist UNICODE nicht definiert dann ist _tmain => main und wenn es definiert ist, ist es wmain. Hat nichts mit .net oder managed c++ zu tun.
-
...
-
Warum nicht einfach angeben, dass die Funktion main heißen muss und alles andere beim Compiler liegt?
Ja und wie schreibst du dann Anfängertutorien? Da es keine richtigen oder falschen Argumente gibt, hast du da ein ziemliches Problem. Da müsste dann immer stehen "Gucken sie erlaubte Argument- und Rückgabetypen in ihrer Compilerdokumentation nach".
Das ist natürlich ein doofes Argument, aber man kanns ganz schnell zu einem guten machen => Portabilität.Und wenn ich meine Projekte entwickle habe ich eigentlich mehr Probleme andere Fehler zu finden. Das ich versehentlich void statt int bei der main geschrieben habe ist mir jedenfalls noch nie passiert und wenn würde es mir der Compiler mitteilen, weshalb das wohl auch kein Problem ist.
-
FinalBlackout schrieb:
Beim neuen VC++ 2005 erstellt der mir bei Konsolenprojekten imemr ne int _tmain(int argc, _TCHAR* argv[]), wieso kann man die nicht einfach standardisieren?
(Übrigens, Afaik unterstützt gcc(zumindest mingw) kein void main() mehr)
Wie es im 05er aussieht kann ich dir nicht sagen, aber müsste ähnlich sein wie bei 03:
Gehe in deinen VC Ordner da ist nen Ordner mit dem namen VCWizards, da gehste in den Ordner win32wiz dort in den Ordner Templates und öffnest die root.cpp darin
steht einmal die WinMain und einmal die main drin, die kannste nach belieben bearbeiten
und musst in Zukunft nicht immer leeres Projekt wählen, oder das ganze immer wieder neue von Hand machen.
-
Die Signatur von main stellt in der professionellen Praxis nicht wirklich ein Problem dar, von daher genießt diese Frage wohl nicht die höchste Priorität in Standardisierungskreisen. Allerdings muß irgendwann mal darüber debattiert worden sein, und das implizite return 0 als (imho hässlicher) Kompromiss herausgekommen sein. Dass sie void main nicht zulassen, könnte eine kleine Ego-Geschichte sein.