TA的每日心情 | 奋斗 2016-10-11 09:20 |
---|
签到天数: 271 天 连续签到: 1 天 [LV.8]以坛为家I
|
今天同学问了我这个问题,之前还真没研究过,仔细找了下资料,发现了他们的区别如下:
以
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)other_widget);
为例。
在这里,当button的clicked触发的时候,会执行gtk_widget_destroy(button,other_widget),当然,实际上,gtk_widget_destroy只有一个参数,所以应该是gtk_widget_destroy(button);当然,我不知道glib是如何实现参数数目不同还可以匹配的,如果有知道的大牛,请与我交流。
而如果是
g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), (gpointer)other_widget);
那么,触发事件后,会执行gtk_widget_destroy(other_widget,button);也就是gtk_widget_destroy(other_widget);
所以,一句话就是,g_signal_connect_swapped会把用户参数和目标对象在回调函数中参数位置进行对掉。 |
|