bonjour,
malgr�s MSDN j ai pas trop compris __stdcall. Pourriez vous me dire a quel moment ce tag est il utilis� ?
merci
bonjour,
malgr�s MSDN j ai pas trop compris __stdcall. Pourriez vous me dire a quel moment ce tag est il utilis� ?
merci
grosso modo, c'est la convention d'appel pour les API windows. D�pilage des param�tres de droite � gauche, ainsi ce sera compatible avec VB par exemple
La diff�rence principale entre "normal" (g�n�ralement, "normal" signifie __cdecl) et __stdcall, c'est qu'en __stdcall, c'est la fonction appel�e qui d�pile les param�tres, et non pas la fonction appelante. C'est une optimisation en taille s'il y a beaucoup d'appels, mais on ne peut pas faire de fonction � nombre d'arguments variable avec �a.
De plus, je me demande si �a n'impacte pas un poil la performance parce que la fonction appel�e ne peut pas retourner "directement".
Une autre convention d'appel est __fastcall, qui est comme __stdcall sauf que les deux premiers param�tres sont plac�s dans des registres. Ce n'est g�n�ralement pas utilis� dans l'API Windows, mais Borland en fait un usage massif.
En gros, pratiquement toutes les fonctions de l'API Windows sont en __stdcall, et les fonctions de la C Run-Time Library (CRT) sont en __cdecl. Une fonction �crite par l'utilisateur est en __cdecl si on ne pr�cise pas autrement (ou si on ne change pas la convention d'appel par d�faut dans les options du projet).
Derni�re note, les macros comme WINAPI, PASCAL, STDCALL et CALLBACK correspondent � __stdcall sur un PC x86.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager