Bonjour,
Je me suis mis à la programmation Windows et j'entends beaucoup parler de _stdcall. Je voudrais savoir si quelqu'un peut me renseigner à ce sujet. Les détails seront les bienvenus.
Merci
Bonjour,
Je me suis mis à la programmation Windows et j'entends beaucoup parler de _stdcall. Je voudrais savoir si quelqu'un peut me renseigner à ce sujet. Les détails seront les bienvenus.
Merci
_stdcall est un mot-clé spécifique de certains compilateurs sous la plate-forme Windows. Il indique que les fonctions et variables doivent utiliser la convention d'appel "stdcall", par opposition aux conventions d'appel "cdecl" et "pascal". Cette différence est au niveau assembleur (ordre d'empilement des paramètres, encodage du nom de la fonction, méthode de retour, etc...), je ne vais pas m'étendre sur les détails. Mais les fonctions de l'API Win32 utilisent cette convention d'appel, d'où la nécessité de déclarer ses propres fonctions en stdcall si on veut que Windows l'appelle directement (callback).
_stdcall ne fait pas partie du C standard, donc ne l'utilise pas si tu n'en n'as pas besoin. Normalement, les macros CALLBACK (et WINAPI) sous Win32 comportent "_stdcall" dans leur définition, donc tu ne devrais jamais en avoir besoin directement.
Merci,mais je dois être très lent à comprendre car pour moi ce n'est pas plus clair. Mais je garde l'idée générale c'est à dire procédure d'appel.
J'en profite pour demander des renseingnements à propos de ce mystérieux "callback" qui ne me lâche pas dans les programmes windows.
Je sais que çà peut paraître basique mais tout le monde ne programme pas depuis sa tendre enfance.
Je sais que ma réponse était très technique, mais je ne vois pas comment expliquer autrement quelque chose d'aussi complexe que les conventions d'appels... Les différences ne se font qu'au niveau assembleur (le développeur C se fiche de ce genre de détails).
Le callback, c'est plus simple à comprendre, mais ça n'a rien de "basique", rassure-toi
La plupart du temps, c'est toi qui appelle les fonctions du C (comme strlen) ou de l'API (comme CreateWindow). Mais il est parfois nécessaire que ça soit le contraire, que ça soit le système ou la bibliothèque qui appelle une de tes fonctions. C'est ça que sous Win32 on appelle les fonctions callback : tes fonctions qui sont appelées par le système.
Exemple en C standard : la fonction qsort() permet de trier un tableau comportant n'importe quel type d'élément. On lui passe comme paramètre le tableau lui-même, la taille d'un élément, ainsi qu'une fonction qui permet de comparer deux éléments (obligatoire pour faire un tri). Cette fonction, c'est toi qui l'écrit (généralement), et elle sera appelée par qsort à chaque fois qu'il a besoin de comparer deux éléments. Voilà un exemple de ce qu'on peut appeler une fonction callback.
Merci beaucoup. J'ai mes réponses. Vraiment on ne peut pas être plus clair que tu l'as été dans tes explications.
Partager