IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

[microsoft specific] __stdcall


Sujet :

Visual C++

  1. #1
    Membre �clair� Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Par d�faut [microsoft specific] __stdcall
    bonjour,

    malgr�s MSDN j ai pas trop compris __stdcall. Pourriez vous me dire a quel moment ce tag est il utilis� ?

    merci

  2. #2
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    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

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    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.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Merci de consulter le support Microsoft
    Par Community Management dans le forum Windows
    R�ponses: 5
    Dernier message: 01/09/2014, 00h31
  2. Quel SGBD choisir : Oracle ou Microsoft SQL-Server ?
    Par dellibmdell dans le forum D�cisions SGBD
    R�ponses: 94
    Dernier message: 06/03/2013, 23h42
  3. [D�bat] Choisir InterBase/Firebird ou Microsoft SQL-SERVER ?
    Par asenaici dans le forum D�cisions SGBD
    R�ponses: 90
    Dernier message: 19/03/2009, 20h51
  4. R�ponses: 5
    Dernier message: 15/12/2005, 20h16
  5. R�ponses: 5
    Dernier message: 20/08/2002, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo