__stdcall ??

cs_fada09 Messages postés 24 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 3 août 2004 - 7 avril 2004 à 13:38
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 8 avril 2004 à 16:03
Salut,

Bon juste une petite question, je voudrais savoir à quoi cela sert de mettre __stdcall dans l'en-tête d'une fonction juste avant le nom de la fonction? Désolé si ma question est un peu con mais j'ai cherché dans MSDN et j'ai rien trouvé qui m'éclaire. :sad)

Une autre petite question : Si j'ai stdafx.h inclus, j'ai des trucs qui marchent pas comme par exemple ShellExecute(...);
ou encore une structure OPENFILENAME. Je vois pas trop le rapport avec Stdafx.h mais bon...

Merci d'avance à tous ceux qui pourrons m'aider simplement
bye
~~ Fada ~~ ;)

10 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 16:35
__fastcall ca permet d'accelerer l'appel de ta fonction quand celle ci a des parametres

sinon #include <windows.h>
0
cs_fada09 Messages postés 24 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 3 août 2004
7 avril 2004 à 16:55
Tout d'abord merci d'avoir répondu.

Pour __fastcall tu le met dans toutes les fonctions ???

J'ai fait l'include windows.h (en premiere position dans mes includes en plus) et ça marchait toujours pas. Enfin c'est pas grave si je vire stdafx.h plus de pbs

~~ Fada ~~ ;)
0
cs_fada09 Messages postés 24 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 3 août 2004
7 avril 2004 à 16:55
Tout d'abord merci d'avoir répondu.

Pour __fastcall tu le met dans toutes les fonctions ???

J'ai fait l'include windows.h (en premiere position dans mes includes en plus) et ça marchait toujours pas. Enfin c'est pas grave si je vire stdafx.h plus de pbs

~~ Fada ~~ ;)
0
hilairenicolas Messages postés 398 Date d'inscription jeudi 30 octobre 2003 Statut Membre Dernière intervention 15 juin 2007 2
7 avril 2004 à 16:56
stdcall
fastcall
cdecl

pour windows, utiliser WINAPI (qui est un alias de __stdcall)
0

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

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 16:58
met le sur les fonctions qui ont des parametres seulement si il ya reel besoin de vitesse, mais n'en abuse pas car g crois que ca bouffe du registre cpu (lol, faudrait que g verifi)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 17:00
oula, g vient de remarquer aque g repondait a coter, g confondu __stdcall et __fastcall, desolé
0
cs_fada09 Messages postés 24 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 3 août 2004
7 avril 2004 à 17:16
Merci a tous !!
enfin j'y vois un peu plus clair :)

Reste plus que le pb de stdafx.h que je comprends pas mais c'est pas bien grave je vais continuer a chercher

Encore merci
~~ Fada ~~ ;)
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 avril 2004 à 04:34
lors de l'appel à une fonction qui prend des paramètres, il y à 2 façons de les lui donner :
- par les registres (__fastcall).
- par la pile (__sdtcall, __cdecl).

lors du passage de paramètres par la pile, il y a donc 2 cas:
__stdcall : c'est la fonction appelée qui se charge de dépiler les paramètres lors du retour.
__cdecl : c'est la fonction qui appelle sui se charge de dépiler.

donc lorsqu'une fonction est __stdcall, il faut lui donner le bon nombre de paramètres sinon ça plante.

losqu'une fonction est __cdecl, on peut lui-donner un nombre quelconque de paramètres (comme les fct printf).
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 avril 2004 à 09:01
mais c'est pas ansi ca?

en ansi pour gerer un nombre variable de parametre il faut definir un prototyoe comme ca

int f(int a, int b, ...);

a et b sont les parametres nommé, suivi d'un nombre variable de parametres effectifs

pour acceder a ces parametres on se sert des macros va_start et va_arg definie dans stdarg.h
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
8 avril 2004 à 16:03
__cdecl est la convention d'appel par défaut du des fonctions en C (le mot clé lui est peut -être spécifique au compilo mais ca se trouve dans les options normalement)
0
Rejoignez-nous