如何将多个变量传递给gtk信号处理程序?

如何将多个变量传递给gtk信号处理程序?,gtk,signals,Gtk,Signals,我被告知,唯一/最好的方法是将变量存储在一个结构中并传递该结构,但是它变成了一个gpointer,我似乎无法将其转换回一个结构来检索数据 如果还有其他方法,我也希望使用它。将结构转换回信号处理程序中的正确类型 MyVariables *vars = (MyVariables *)user_data; PS。哦,是的,别忘了分配结构;如果您传递一个局部变量,它将在调用信号处理程序时消失。当我尝试这样的操作时,会说错误:“MyVariables”未声明(首次用于此函数)MyVariables不是任

我被告知,唯一/最好的方法是将变量存储在一个结构中并传递该结构,但是它变成了一个gpointer,我似乎无法将其转换回一个结构来检索数据


如果还有其他方法,我也希望使用它。

将结构转换回信号处理程序中的正确类型

MyVariables *vars = (MyVariables *)user_data;

PS。哦,是的,别忘了分配结构;如果您传递一个局部变量,它将在调用信号处理程序时消失。

当我尝试这样的操作时,会说
错误:“MyVariables”未声明(首次用于此函数)
MyVariables
不是任何名称,而是结构的类型名称。您确实执行了
typedef struct{GtkWidget*whatever;}MyVariables,对吗?没有
typedef
,应该可以解决它。好的,似乎可以。我想我还必须
释放
内存末尾的结构?或者有更好的方法吗?当信号断开时,您可以提供释放数据参数的功能;有关详细信息,请参阅文档。我不是100%确定,但我认为
g\u信号连接数据(对象,“信号名称”,g\u回调(信号处理程序),vars,g\u free,0)应该可以工作。