Co niepoprawnie robię próbując przekazać tablicę przez gpointer?
W debuggerze dostaję segmentational fault, a gtk wypluwa w konsoli:
(GTK.exe:47484): GLib-GObject-WARNING **: invalid uninstantiatable type `<unknown>' in cast to `Gtk
Label'
(GTK.exe:47484): Gtk-CRITICAL **: gtk_label_get_text: assertion `GTK_IS_LABEL (label)' failed
Kod programu:
int n;
static void test(gpointer t){
GtkWidget **label = t;
int perm[n*n];
for(int i = 0;i<n*n;i++){
printf("t\n");
perm[i]=atoi(gtk_label_get_text(GTK_LABEL(label[i])));
printf("%d %d\n",i,perm[i]);
}
}
int main(int argc, char *argv[]) {
n = 4;
char c[n];
GtkWidget *buttons[n * n];
[...]
GtkWidget *b = gtk_button_new_with_label("Next");
gtk_grid_attach(GTK_GRID(menu), b, 20, 10, 10, 10);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
sprintf(c, "%d", i * n + j + 1);
buttons[i * n + j] = gtk_label_new(c);
gtk_grid_attach(GTK_GRID(grid), buttons[i * n + j], 10 * j, i * 10,
10, 10);
}
}
g_signal_connect(G_OBJECT(b), "clicked", G_CALLBACK(test), &buttons);
[...]
return 0;
}