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

C Discussion :

_stdcall


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Par défaut _stdcall
    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

  2. #2
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    _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.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Par défaut
    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.

  4. #4
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 380
    Billets dans le blog
    1
    Par défaut
    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.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 4
    Par défaut
    Merci beaucoup. J'ai mes réponses. Vraiment on ne peut pas être plus clair que tu l'as été dans tes explications.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/07/2011, 12h19

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