|
void a (const unsigned int a =
1){
printf("a = %d",a); //这里打印一个a , 是 1
gpointer data;
data = GINT_TO_POINTER(a);
printf("data = %d",GPOINTER_TO_INT(data)); //这里打印一个data , 是 1
b(data);
}
void b(gpointer data){
int a= GPOINTER_TO_INT(data);
printf("a = %d",a); //这里打印一个a , 是 -5
}
这里是怎么回事呢?
怎么我把gpointer传过去, 值就变了呢?
我的程序大概就是这个样子, 只不过传递值得时候是通过gtk的 g_signal_connect(G_OBJECT, "response", CALL_BACK_FUN, gpointer)
这里, CALL_BACK_FUN就是方法 b了。 gpointer 就是 上面的data了。
b方法原型应该是: void b (GtkWidget *msg, gpointer data)
msg 就是g_signal_connect的第一个参数的对象。
然后我不用宏来解决。
void b(GtkWidget *msg, gpointer data){
int *a = static_cast<int *>(data);
printf("a = %d",a); //这里打印一个a , 还是是 -5
}
求助啊!!!!!
|
|