تابع g_signal تنها می زاره یه ارگومان بفرستیم به تابع callback برای فرستادن چند شی و چند نوع داده به تابع callback چکار باید انجام داد؟ من می دونم باید از struct استفاده کرد ولی دقیقا نمی دونم چطور اگه کسی در این مورد اطلاعی داره توضیح بده با ذکر یه مثال
من خودم یه چیزی نوشتم ولی نمی دونم چرا اجرا نمی شه من می خوام یک داده و یه شی رو به یک تابع callback کلیک یک دکمه بفرستم. اشتباه کد زیر کجاست؟
 #include <gtk/gtk.h>

typedef struct{
GtkWidget *entry1;const gchar *str;
}Entries;

void hi(GtkWidget *widget,gpointer data){

Entries *e=(Entries*)data;

g_print(e->str);
}

int main(int argc,char *argv[]){

gtk_init(&argc,&argv);

GtkWidget *window;

GtkWidget *button;

GtkWidget *table;

Entries *e=g_slice_new(Entries);

e->entry1=gtk_entry_new();

e->str='1';

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

button=gtk_button_new_with_label("Click");

table=gtk_table_new(3,3,TRUE);

gtk_container_add(GTK_CONTAINER(window),table);

gtk_table_attach_defaults(GTK_TABLE(table),button, 0,1,1,2);

gtk_table_attach_defaults(GTK_TABLE(table),e->entry1,0,3,0,1);

g_signal_connect(G_OBJECT(button),"clicked",G_CALL BACK(hi),(gpointer)e);

gtk_widget_show(window);

gtk_widget_show(button);

gtk_widget_show(e->entry1);

gtk_widget_show(table);

gtk_main();

return 0;

}