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 :

Interface en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Par défaut Interface en C
    Bonjour à tous,

    J'ai un petit problème avec mon code qui me permet de créer une interface.

    Mon interface:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    typedef struct _My_Interface
    {
       char* (*init) (char* test);
       int (*shutdown) (char* test);
    } My_Interface;
    Représentation de l'interface:
    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
     
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
     
    #include "interface.h"
     
    static char* em_init(char* test);
    static int em_shutdown(char* test);
     
    static My_Interface mytestinterface =
    {
       em_init, /* init */
       em_shutdown /* shutdown */
    };
    Le fichier main:
    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
    20
    21
    22
    23
     
    #include "main.h"
     
    static char* em_init(char* test)
    {
            printf("%s\n", test);
    	return "hello";
    }
     
    static int em_shutdown(char* test)
    {
            printf("%s\n", test);
    	return 1;
    }
     
    int main()
    {
    	My_Interface* test;
    	test = malloc(sizeof(mytestinterface)); // Absolument pas sûr de ce que je fais !!!
            test->init("Hello from module");
            test->shutdown("Goodbye from module");
    	return 0;
    }
    Quand j'appelle "test->init", j'ai un segmentation fault.
    Pouvez-vous me dire comment je dois faire pour charger cette structure en mémoire ?

    Merci d'avance pour vos réponses,
    Cordialement,
    Nicolas.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    C'est normal que ça plante. Tu crées un objet structure, mais tu n'initialises pas ses membres. Du coup, la valeur des pointeurs est bidon.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Iran

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2011
    Messages : 28
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int main()
    {
            My_Interface* test;
            test = (My_Interface*)malloc(sizeof(mytestinterface)); // Absolument pas sûr de ce que je fais !!!
            test->init = em_init;
            test->shutdown = em_shutdown;
            test->init("Hello from module");
            test->shutdown("Goodbye from module");
    
            return 0;
    }

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 36
    Par défaut
    Bonjour,

    Oui effectivement ça marche mieux comme ça !
    Merci beaucoup pour vos réponses.

    Cordialement,
    Nicolas.

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

Discussions similaires

  1. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  2. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  3. interface utilisateur avec OpenGL
    Par demis20 dans le forum OpenGL
    Réponses: 6
    Dernier message: 03/10/2002, 12h27
  4. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51
  5. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50

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