当前时区 GMT+8, 现在时间是 2008-5-13 13:35 游客: 注册 登录 仅登录论坛 | 搜索 帮助


标题: 新手求助 gponiter 参数传递问题
leeray
新手上路
Rank: 1



UID 247756
精华 0
积分 1
帖子 1
阅读权限 10
注册 2008-3-15
状态 离线
发表于 2008-3-15 16:57  资料  短消息  加为好友 
新手求助 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
}

求助啊!!!!!

顶部
 


Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 中国Linux公社 - WAP