Bon voilà je débute sur GTK et j'ai fais ce petit exercise
Faites un programme qui fait ceci lorsque on clique sur la croix :
Ecrire le titre de la fenêtre dans la console, en inversant l'ordre des lettres !
Quitter le programme.
Voilà le code que j'ai obtenu la première fois :
Le compilateur me met le warning suivant :
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
27
28
29
30
31
32 #include <gtk/gtk.h> #include <stdlib.h> #include <string.h> void inverser_titre_quitter (GtkWidget *p_widget, gpointer data) { printf ("%s\n", strrev (gtk_window_get_title (GTK_WINDOW (p_widget)))); gtk_main_quit (); } int main (int argc, char **argv) { GtkWidget *p_window = NULL; gtk_init (&argc, &argv); p_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (p_window), "Tadili Saad"); gtk_widget_show (p_window); g_signal_connect (G_OBJECT (p_window), "delete-event", G_CALLBACK (inverser_titre_quitter), NULL); gtk_main (); return EXIT_SUCCESS; }
warning: passing arg 1 of `strrev' discards qualifiers from pointer target type|
J'imagine que celà est du au fait que je modifie la chaine de caractere du widget n'est-ce pas ?
donc j'ai modifier ma fonction pour obtenir le code suivant :
Et je me demande si il y a pas une meilleure méthode, aussi quand je déclare p_tmp1 juste en mettant char *p_tmp1 j'ai un warning
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void inverser_titre_quitter (GtkWidget *p_widget, gpointer data) { const gchar *p_tmp1 = gtk_window_get_title (GTK_WINDOW (p_widget)); char *p_tmp2 = malloc (sizeof (strlen (p_tmp1) * *p_tmp2)); strcpy (p_tmp2, p_tmp1); printf ("%s\n", strrev (p_tmp2)); free (p_tmp2); gtk_main_quit (); }
warning: initialization discards qualifiers from pointer target type
J'ai donc mis :
const gchar *p_tmp1
ça marche mais je sais pas si c'est correct, et si tel est le cas pourquoi on est obligé de faire ça.
et surtout ça veut dire quoi ce warning que j'ai jamais eu avant :
initialization discards qualifiers from pointer target type
Merci
Partager