JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=ddaacce9dc45b072fb0fe2a8b4b27c4bMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

WinMain
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  

Welche WinMain nehmt ihr?
WINAPI WinMain
73%
 73%  [ 11 ]
__stdcall WinMain
20%
 20%  [ 3 ]
APIENTRY WinMain
6%
 6%  [ 1 ]
FAR PASCAL WinMain
0%
 0%  [ 0 ]
far pascal WinMain
0%
 0%  [ 0 ]
Stimmen insgesamt : 15

Autor Nachricht
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 09:21    Titel: WinMain Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 12:38    Titel: Antworten mit Zitat

#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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 13:38    Titel: Antworten mit Zitat

@Patrick
Also schreibst du nun WINAPI oder __stdcall?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 14:15    Titel: Antworten mit Zitat

__stdcall. da die alte kompatibilität heute nicht mehr notwenig ist.
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 19:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 20:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 20:36    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 04.05.2005, 20:38    Titel: Antworten mit Zitat

FH
Heute siehts zwar nach Verschwendung aus, aber bis vor 8 Jahren hätte man Dich dafür verhauen Very Happy

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 11:35    Titel: Antworten mit Zitat

wie gut dass wir im heute leben Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 11:40    Titel: Antworten mit Zitat

xardias hat Folgendes geschrieben:
wie gut dass wir im heute leben Wink


Kann man sehen wie man will Wink 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 12:18    Titel: Antworten mit Zitat

Ich benutze APIENTRY. Ist auch die neueste Definition, oder? Wink
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:
CPP:
void Yeah()
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 12:24    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 19:15    Titel: Antworten mit Zitat

@Patrick
Müsstest du das nicht schrecklich finden? Tausende #defines....

Ahhh... Ich finde #defines witzig... Besonders die Makros...

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 19:18    Titel: Antworten mit Zitat

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 Wink
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 05.05.2005, 19:26    Titel: Antworten mit Zitat

Zitat:
CPP:
#define for if(false) else for

ne? Cool

Gruß DirectXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum