Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Welche WinMain nehmt ihr? |
WINAPI WinMain |
|
73% |
[ 11 ] |
__stdcall WinMain |
|
20% |
[ 3 ] |
APIENTRY WinMain |
|
6% |
[ 1 ] |
FAR PASCAL WinMain |
|
0% |
[ 0 ] |
far pascal WinMain |
|
0% |
[ 0 ] |
|
Stimmen insgesamt : 15 |
|
Autor |
Nachricht |
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.05.2005, 09:21 Titel: WinMain |
|
|
Hi,
wahrscheinlich wird dieser Thread zu einem der sinnlosesten dieses Forums verbannt werden... Aber egal. Interessiert mich halt.
Nebenbei dient dieser Thread dazu, manchen den Grund zu nennen, weshalb einige WINAPI WinMain schreiben, andere __stdcall WinMain und wieder andere APIENTRY WinMain schreiben.
Es sei gesagt, dass WINAPI nur eine Kopie von __stdcall ist(genauso wie auch die anderen) In der Datei windef.h steht nämlich u.A. CPP: | #define WINAPI __stdcall |
Gruß DirectXer |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 04.05.2005, 12:38 Titel: |
|
|
#define WINAPI stammt noch aus den urigsten WinNT Zeiten von 1986 und wurde dort nur wegen Kompatibilitätsgründen unter den Verschiedenen Compilern definiert (Damals gabs noch kein VC++).
Aber heute ist überall WINAPI, PASCAL und co ganz einfach nur noch __stdcall. Ist auch eindeutiger _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 04.05.2005, 13:38 Titel: |
|
|
@Patrick
Also schreibst du nun WINAPI oder __stdcall? |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 04.05.2005, 19:24 Titel: |
|
|
Wo liegt eigentlich der Unterschied zwischen APIENTRY und WINAPI/__stdcall?
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 04.05.2005, 20:18 Titel: |
|
|
FH CPP: | #undef far
#undef near
#undef pascal
#define far
#define near
#if (!defined(_MAC)) && ((_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED))
#define pascal __stdcall
#else
#define pascal
#endif
#if defined(DOSWIN32) || defined(_MAC)
#define cdecl _cdecl
#ifndef CDECL
#define CDECL _cdecl
#endif
#else
#define cdecl
#ifndef CDECL
#define CDECL
#endif
#endif
#ifdef _MAC
#define CALLBACK PASCAL
#define WINAPI CDECL
#define WINAPIV CDECL
#define APIENTRY WINAPI
#define APIPRIVATE CDECL
#ifdef _68K_
#define PASCAL __pascal
#else
#define PASCAL
#endif
#elif (_MSC_VER >= 800) || defined(_STDCALL_SUPPORTED)
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
#else
#define CALLBACK
#define WINAPI
#define WINAPIV
#define APIENTRY WINAPI
#define APIPRIVATE
#define PASCAL pascal
#endif |
Wurde damals gemacht für verschiedene Compiler und andere Kernels. Heute ist alles __stdcall. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 04.05.2005, 20:36 Titel: |
|
|
Hab ich das richtig verstanden??? CPP: | far pascal=FAR PASCAL=WINAPI=APIENTRY=__stdcall | ???
Was für eine Verschwendung!!!
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 04.05.2005, 20:38 Titel: |
|
|
FH
Heute siehts zwar nach Verschwendung aus, aber bis vor 8 Jahren hätte man Dich dafür verhauen
Damals war schon ein enormer unterschied, vorallem da noch zwischen far und near unterschieden wurde und die Datentypen andere Größen hatten als heute. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 05.05.2005, 11:35 Titel: |
|
|
wie gut dass wir im heute leben |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.05.2005, 11:40 Titel: |
|
|
xardias hat Folgendes geschrieben: | wie gut dass wir im heute leben |
Kann man sehen wie man will hat alles seine Vor- und Nachteile _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
KI JLI Master
Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 05.05.2005, 12:18 Titel: |
|
|
Ich benutze APIENTRY. Ist auch die neueste Definition, oder?
CPP: | int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
// ...
// Everything that has a beginning has an end, Neo
return static_cast<int>(msg.wParam);
} |
Wenn man ohne Standard-Librarys arbeitet (weil man ein möglichst kleine EXE haben will), muss man seinen Programmeinsprungpunkt sowieso selbst festlegen und kann z.B auch das benutzen:
|
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.05.2005, 12:24 Titel: |
|
|
KI
Die Definitionen sind alle gleich alt: 19-21 Jahre
Das mit dem Programmeinsprungspunkt stimmt nicht ganz. Ein Betriebssystem erwartet main als Einsprungspunkt, so schreibt es der Standard vor und daran muss sich jeder halten der auch Binarys ausführen will.
Beim schreiben eines Loaders für Kernels (z.B. wenn man ein eigenes OS schreibt) sieht die Welt wieder anders aus, da C bzw. C++ dort nicht als Standardisiert gelten und daher die Standards auch nicht ansprechen. Dadurch kann man mit einem eigenen Linkerscript und dem Assembercode des Loaders den Einsprungspunkt selber festlegen, jedoch der Einsprungspunkt des Loaders ist wiederum standardisiert.
Aber unter Windows/Linux/Sun/MacOS X usw. ist das uninteressant, dort gilt als einzig gültige Option: main bzw. bei Windows und MacOS: WinMain _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 05.05.2005, 19:15 Titel: |
|
|
@Patrick
Müsstest du das nicht schrecklich finden? Tausende #defines....
Ahhh... Ich finde #defines witzig... Besonders die Makros...
Gruß DirectXer |
|
Nach oben |
|
|
Patrick Dark JLI Master
Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 05.05.2005, 19:18 Titel: |
|
|
DirectXer
Du weißt ich benutze #define nur für den Präprozessor und nicht für Konstantenaufteilung oder Typaufteilung. Damals war der Präprozessor halt die einzigste Möglichkeit eine Einheitlichkeit zu gewährleisten unter den Compilern. Heute ist dem ja, zum Glück, nicht mehr so wie Früher _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 05.05.2005, 19:26 Titel: |
|
|
Zitat: | CPP: | #define for if(false) else for |
|
ne?
Gruß DirectXer |
|
Nach oben |
|
|
|