QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1990|回复: 0

新手求助 gponiter 参数传递问题

[复制链接]
发表于 2008-3-15 16:57:32 | 显示全部楼层 |阅读模式
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
}

求助啊!!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 00:39 , Processed in 0.041676 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表