Bonjou, alors je suis débutant en GTK et je fais donc un programme qui affiche 4 boutons qui portent tous le même label à l'initialisation, et je souhaite écrire une seule fonction void et l'appeler 4 fois tour à tour, à chaque fois que je clique sur l'un des boutons. Cette fonction devra changer le label du bouton. Pouvez vous m'aider svp?! Voilà mon code qui ne compile pas :

#include <stdlib.h>
#include <gtk/gtk.h>


void clic (GtkWidget *pBouton);

// Declaration des variables globales

int x = 1;

int main(int argc, char** argv)
{
//Fenetre principale
GtkWidget* pFenetre=NULL;

// Quatres Boutons
GtkWidget* pBouton1=NULL;
GtkWidget* pBouton2=NULL;
GtkWidget* pBouton3=NULL;
GtkWidget* pBouton4=NULL;

// Initialisation de l'environnement gtk
gtk_init(&argc, &argv);

// Creation d'une fenêtre
pFenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);

//Titre de la fenêtre
gtk_window_set_title(GTK_WINDOW(pFenetre), "Qui est clicked ?");
// On modifie la taille de la fenetre
gtk_window_set_default_size(GTK_WINDOW (pFenetre), 800, 100);
// On interdit de modifier la taille
gtk_window_set_resizable (GTK_WINDOW (pFenetre), TRUE);
//On centre toujours la fenetre
gtk_window_set_position(GTK_WINDOW(pFenetre),GTK_WIN_POS_CENTER_ALWAYS);

GtkWidget* pHbox=NULL;

// Creation des quatre boutons avec label
pBouton1 = gtk_button_new_with_label ("Je ne suis pas clicked");
pBouton2 = gtk_button_new_with_label ("Je ne suis pas clicked");
pBouton3 = gtk_button_new_with_label ("Je ne suis pas clicked");
pBouton4 = gtk_button_new_with_label ("Je ne suis pas clicked");

// Creation d'une boite
pHbox = gtk_hbox_new (TRUE, 0);

//Ajouts des quatre boutons dans la boite
gtk_box_pack_start (GTK_BOX(pHbox), pBouton1, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(pHbox), pBouton2, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX(pHbox), pBouton3, FALSE, FALSE,0 );
gtk_box_pack_start (GTK_BOX(pHbox), pBouton4, FALSE, FALSE,0 );

// Ajoutons la boite dans la fenetre
gtk_container_add (GTK_CONTAINER(pFenetre), pHbox);


// Affichage de la fenêtre
gtk_widget_show_all(pFenetre);

// Fonction qui capte le signal de la petite croix pour fermer la fenetre
gtk_signal_connect(GTK_OBJECT(pFenetre), "destroy", G_CALLBACK(gtk_main_quit), NULL);

// Fonction qui capte le clic de la souris pour changer le texte
gtk_signal_connect(GTK_OBJECT(pBouton1), "clicked", G_CALLBACK(clic(pBouton1)), NULL);

// Fonction qui capte le clic de la souris pour changer le texte
gtk_signal_connect(GTK_OBJECT(pBouton2), "clicked", G_CALLBACK(clic(pBouton2)), NULL);

// Fonction qui capte le clic de la souris pour changer le texte
gtk_signal_connect(GTK_OBJECT(pBouton3), "clicked", G_CALLBACK(clic(pBouton3)), NULL);

// Fonction qui capte le clic de la souris pour changer le texte
gtk_signal_connect(GTK_OBJECT(pBouton4), "clicked", G_CALLBACK(clic(pBouton4)), NULL);


// Lancement de la boucle événementielle

gtk_main();

return EXIT_SUCCESS;
}


void clic (GtkWidget* pBouton)
{
if (x == 1) {
gtk_button_set_label(GTK_BUTTON(pBouton),"Je suis clicked");
x = 0;
}
else {
gtk_button_set_label(GTK_BUTTON(pBouton),"Je suis clicked");
x = 1;
}

}