将结构传递给回调函数

时间:2015-12-03 10:54:34

标签: c linux gtk

我试图将结构传递给在更改组合框时运行的回调函数,这是我的代码:

static struct parameters changed_set_parameters;

changed_set_parameters.set_combo = set_combo;

gtk_signal_connect (GTK_OBJECT (set_combo), "changed",GTK_SIGNAL_FUNC(set_changed), &changed_set_parameters);

这里的功能是:

void set_changed(GtkDialog *dialog, gint response_id, gpointer callback_params) {
    g_print ("%s\n",gtk_combo_box_text_get_active_text ((GtkComboBoxText *)((struct parameters *) callback_params)->set_combo));
}

这是我得到的:

gtk_signal_handlers.h:7:98: error: dereferencing pointer to incomplete type
       g_print ("%s\n",gtk_combo_box_text_get_active_text ((GtkComboBoxText *)((struct parameters *) callback_params)->set_combo));

我在另一个应用程序中有几乎相同的代码,它运行得很好

1 个答案:

答案 0 :(得分:0)

  

error: dereferencing pointer to incomplete type

此处的解除引用运算符为->,解除引用的指针为((struct parameters *) callback_params),其类型为struct parameters *set_combostruct parameters的成员,因此struct parameters的定义必须超出此范围。