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 :

Déréférencement d'un pointeur


Sujet :

C

  1. #21
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Par défaut
    Citation Envoyé par souviron34
    NON

    En fait tu fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    T fonction(GtkWidget *widget, gpointer *data)
    {
        GdkPixbuf **pixbuf = data;
     
        (*pixbuf)....
    ...
    }
    et si tu appeles comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GdkPixbuf *pixbuf;
    ...
    ... (void *)&pixbuf ...
    jvais test ça, c'est pas mal, merci souviron, j'uis c** j'avais pas pensé à double pointer le pixbuf tout simplement

  2. #22
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    C'est quoi se bidouillage

    Le prototype d'une fonction callback n'a pas à changer selon l'humeur du développeur, dans la plupart des cas c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void callback (GtkWidget *, gpointer);
    Le premier paramètre étant le widget qui a reçu le signal et le second un pointeur générique qui te permet de recevoir n'importe (je passe sur les problèmes de conversion entier <-> pointeur par exemple) quelle donnée en la spécifiant lors de la connexion du signal à l'aide de la fonction g_signal_connect.

    Tu veux retrouver ton GdkPixbuf dans ta fonction callback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void callback (GtkWidget *p_widget, gpointer data)
    {
      GdkPixbuf *p_pixbuf = NULL;
     
      g_return_if_fail (GDK_IS_PIXBUF (data));
     
      p_pixbuf = GDK_PIXBUF (data);
      /* ... */
    }
     
    int main (int argc, char **argv)
    {
      GdkPixbuf *p_pixbuf = NULL;
      /* ... */
      g_signal_connect (G_OBJECT (object), "signal", G_CALLBACK (callback), p_pixbuf);
      /* ... */
      gtk_main ();
      return 0;
    }

  3. #23
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Par défaut
    Citation Envoyé par gege2061
    C'est quoi se bidouillage

    Le prototype d'une fonction callback n'a pas à changer selon l'humeur du développeur, dans la plupart des cas c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void callback (GtkWidget *, gpointer);
    Le premier paramètre étant le widget qui a reçu le signal et le second un pointeur générique qui te permet de recevoir n'importe (je passe sur les problèmes de conversion entier <-> pointeur par exemple) quelle donnée en la spécifiant lors de la connexion du signal à l'aide de la fonction g_signal_connect.

    Tu veux retrouver ton GdkPixbuf dans ta fonction callback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    void callback (GtkWidget *p_widget, gpointer data)
    {
      GdkPixbuf *p_pixbuf = NULL;
     
      g_return_if_fail (GDK_IS_PIXBUF (data));
     
      p_pixbuf = GDK_PIXBUF (data);
      /* ... */
    }
     
    int main (int argc, char **argv)
    {
      GdkPixbuf *p_pixbuf = NULL;
      /* ... */
      g_signal_connect (G_OBJECT (object), "signal", G_CALLBACK (callback), p_pixbuf);
      /* ... */
      gtk_main ();
      return 0;
    }
    oui en fait ce n'est qu'un exemple, dans mon programme, je respect cette signature "standard" (widget + gpointer), vu que comme en plus j'ai plusieurs arguments, je passe un pointeur sur une structure comme argument data dans mes callback bref ...
    Merci pour ton code, mais Je sais passer un pixbuf en argument lol, mais je dois passer l'adresse du pixbuf en argument (&pixbuf) )et non pas le pointeur pixbuf lui même (c'est pour l'affichage et le rafraichissement de mon pixmap qui contient mon pixbuf)

    En doublant pointant pixbuf comme souviron propose ca devrait me permettre d'éviter le cast void ** et donc de virer les warning, mais pas encore test ...

  4. #24
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 407
    Par défaut
    Attention, le type de retour n'est pas forcément void. J'ai déjà vu ici une erreur due à cela...
    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.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Déréférencement d'un pointeur null (dans une classe)
    Par polymorphisme dans le forum Langage
    Réponses: 5
    Dernier message: 13/09/2012, 16h44
  2. Réponses: 8
    Dernier message: 07/06/2010, 22h22
  3. déréférencement d'un pointeur de type incomplet
    Par ikuzar dans le forum Débuter
    Réponses: 1
    Dernier message: 07/09/2009, 19h37
  4. déréférencement d'un pointeur de type incomplet
    Par pauligno dans le forum Débuter
    Réponses: 8
    Dernier message: 10/12/2007, 11h50
  5. déréférencement de pointeurs
    Par gangsoleil dans le forum C
    Réponses: 7
    Dernier message: 12/10/2005, 17h35

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