__stdcall

Résolu
alphaone Messages postés 134 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 14 novembre 2009 - 27 déc. 2004 à 16:18
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 27 déc. 2004 à 18:44
a quoi sert __stdcall dans:
void __stdcall function()

9 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
27 déc. 2004 à 17:59
vecchio56 : __stdcall ne marche justement pas avec un nombre variable d'argument vu que c'est la fonction appelée qui se charge de dépiler les paramètres (il faut donc lui passer le bon nombre). c'est __cdecl qui permet un nombre quelconque d'argument car c'est la fonction appellante qui se chargera de dépiler (elle sait donc combien elle a empiler de paramètres)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 déc. 2004 à 16:40
function() depilera les param au lieu que soit l'appelant qui le fasse.

ciao...
BruNews, MVP VC++
alphaone Messages postés 134 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 14 novembre 2009
27 déc. 2004 à 16:51
qui peut m'exiplicaer plus simplement?
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 déc. 2004 à 17:23
Le passage des paramètres se fait sur la pile, de droite à gauche, et la fonction appelée est chargée de dépiler ses paramètres.
__stdcall implique aussi qu'une fontion f dont la somme des taille des arguments est N s'appellera _f@N, par exemple _f@4 pour une fonction du type void __stdcall f(DWORD d)

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
alphaone Messages postés 134 Date d'inscription vendredi 2 mai 2003 Statut Membre Dernière intervention 14 novembre 2009
27 déc. 2004 à 17:33
en claire ça sert a quoi car je suis nul en pile et pointeur
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 déc. 2004 à 17:39
C'est obligatoire pour les fonction a nombre d'arguments variable (printf). Et a quoi ca sert? De toute facon il faut bien choisir une méthode pour le passage des paramètres

http://msdn.microsoft.com/library/FRE/vccore/html/_core_.2f.gd.2c_2f.gr.2c_2f.gz.asp
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
27 déc. 2004 à 18:09
Oui c'est ce que je voulais dire bien sur (non attend je comprends pas pourquoi...)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 déc. 2004 à 18:22
vecchio56 > un gros dodo s'impose.

ciao...
BruNews, MVP VC++
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
27 déc. 2004 à 18:44
vecchio56> __stdcall laisse le "dépillage" des parametrès aux bon soin de la fonction appellé. La fonction appellé n'a aucun moyen de connnaitre le nombre de paramètres passé a la pile.

A l'inverse, __cdecl oblige la fonction appellante a dépiller elle meme les parametres qu'elle passe sur la pile.
Ainsi tu peux créer des fonctions à un paramètres variables.

En gros ce qu'il faut retenir c'est que dans le cas d'une fonction a parametres variables, il n'y a que la fonction appellante qui connait le nombre de paramètres passé, d'ou l'attribut __cdecl.

Je pense ne pas mettre trompé, mais si c'est le cas .... bah corrigez moi.

Shell
Rejoignez-nous