leeray 发表于 2008-3-15 16:57:32

新手求助 gponiter 参数传递问题

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
}

求助啊!!!!!
页: [1]
查看完整版本: 新手求助 gponiter 参数传递问题