PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Warum heißt main bei VS t_main?


Gast
2007-10-05, 00:42:49
Und schönen Dank auch an den Mod der meine Frage heute Morgen gelöscht hat.

Coda
2007-10-05, 09:37:33
Tut es nicht. Ich muss dich enttäuschen.

Gast
2007-10-05, 10:23:14
Tut es nicht. Ich muss dich enttäuschen.


Fehler sind die Schuld des Mods, gestern stand es nämlich noch richtig dran.


Das _tmain gemeint ist, ist logisch.

Gast
2007-10-05, 17:58:24
Fehler sind die Schuld des Mods, gestern stand es nämlich noch richtig dran.


Das _tmain gemeint ist, ist logisch.

Auch hier nochmal wie in dem anderen Thread
http://www.forum-3dcenter.de/vbulletin/showthread.php?t=384871&page=2

_tmain ist nur ein Makro. Normalerweise wird dieses Makro zu main expandiert. Möchte man ein UNICODE Programm haben, wird das Makro zu wmain expandiert.

Coda
2007-10-05, 20:09:48
Das _tmain gemeint ist, ist logisch.
Die Antwort ändert sich dadurch auch nicht.

Visual C++ akzeptiert ganz normales "int main()"

Gast
2007-10-06, 00:37:53
Auch hier nochmal wie in dem anderen Thread
http://www.forum-3dcenter.de/vbulletin/showthread.php?t=384871&page=2

_tmain ist nur ein Makro. Normalerweise wird dieses Makro zu main expandiert. Möchte man ein UNICODE Programm haben, wird das Makro zu wmain expandiert.


Und warum kriegt man den UNICODE nicht anders hin?

Es kann doch nicht sein, daß der Name von main davon abhängt, ob das Programm Unicode kann oder nicht.

Das ist bei Unix doch auch nicht so.

tokugawa
2007-10-06, 02:38:03
Und warum kriegt man den UNICODE nicht anders hin?

Es kann doch nicht sein, daß der Name von main davon abhängt, ob das Programm Unicode kann oder nicht.

Das ist bei Unix doch auch nicht so.

"Unter Unix" (oder sollte man eher sagen, nach dem Standard) hat die main-Funktion mit Parametern nachwievor den char*-Parameter für argv (und nicht wchar_t), selbst bei Unicode.

Sprich, Programmparameter können streng genommen nicht "echtes" Unicode sein im Standard, sondern müssen UTF-8 oder ähnliches verwenden.

Microsoft findet das scheinbar inkonsistent und unschön (ich übrigens auch) und bietet auch eine MS-Spezifische main-Funktion an, die wchar_t als argv akzeptiert.

Wie die main-Funktion heißt ist übrigens sowieso irrelevant, fähige Compiler erlauben sowieso beliebig-benannte Eintrittspunkte.

Gast
2007-10-06, 03:24:36
Wie die main-Funktion heißt ist übrigens sowieso irrelevant, fähige Compiler erlauben sowieso beliebig-benannte Eintrittspunkte.und anhand von was erkennen die dann den Eintrittspunkt?

Gast
2007-10-06, 03:51:56
und anhand von was erkennen die dann den Eintrittspunkt?

Na an Schlüsselwörter wie index().
Das erleichtert den HTML Schreibern den Einstieg in C++. :D



Und init(), start(), begin(), run() oder anfang() gibt's ja auch noch.
start() ist dann für die Windows User gedacht und run() für Unix, GWBasic und C64 Freaks. :D

Gast
2007-10-06, 10:46:56
und anhand von was erkennen die dann den Eintrittspunkt?

Dafür sind ist die C/C++ Laufzeit Umgebung und deren Startup Funktion verantwortlich. Ob Console oder Windows App bzw. ob Ansi oder Unicode verwendet wird, das findet der Linker heraus und integriert dann die korrekte C/C++ Statup Funktion ins Executable.