Bonjour,

J'ai un problème au niveau de passage de structure à une fonction
Je crée une structure dans un fichier .h
Je vais éviter de mettre toutes mes lignes de code pour une meilleure compréhension.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
...
// Définition de la structure de la fenêtre principale
struct ELEMENT
{
	GtkWidget *p_Fenetre[1];
	GtkWidget *p_Vboite[3];
	GtkWidget *p_Selecteur[6];
};
typedef struct ELEMENT ELEMENT;
 
// Prototype des fonctions
void fenetre_principale( ELEMENT *p_Element );
...
Je crée ma variable structure Element que je passe à ma fonction fenetre_principale(&Element).
Jusqu'ici pas de problème, j'arrive à accéder aux variables de ma structure dans cette fonction.

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
...
int main (int argc, char *argv[])
{
 
   gtk_init(&argc, &argv);
   ELEMENT Element;
 
   // Création de la fenêtre principale
      fenetre_principale(&Element);
      create_list (&Element);
 
   // Construction du tableau de prêt
   // affichage de l'ensemble
   gtk_widget_show_all(Element.p_Fenetre[0]);
   gtk_main();
	return (EXIT_SUCCESS);
}
...
C'est à partir d'une seconde fonction ( calcul_pret ) lancée dans la fonction fenetre_principale(&Element).
que j'ai une erreur de segmentation
Je n'arrive pas à récupérer les variables de ma structure Element

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
24
25
26
...
void fenetre_principale( ELEMENT *Element )
{
...
 
// Définition des callbacks
     g_signal_connect (
        G_OBJECT (p_Bouton[0]), 
        "clicked",G_CALLBACK(Calcul_pret),(gpointer)Element
        );
 
...
}
 
void Calcul_pret ( GtkWidget p_Widget, gpointer p_data )
{
   // Conversion des datas dans une structure ELEMENT
   ELEMENT *Recup = (ELEMENT*) p_data;
   // Variables récupération des données
   gchar Paie_1_emprunteur;
 
   // Récupération des informations
   Paie_1_emprunteur = gtk_spin_button_get_value_as_int 
      (GTK_SPIN_BUTTON (Recup -> p_Selecteur[0]));
}
...