gpt4 book ai didi

c - 64位系统,GINT_TO_POINTER(i)/GPOINTER_TO_INT(p)

转载 作者:行者123 更新时间:2023-11-30 14:22:25 29 4
gpt4 key购买 nike

我在将整数传递给回调函数时遇到了最困难的情况,因为 g_signal_connect 的最后一个参数必须是指针。这是我将信号连接到回调的位置:

for (i=0;i<10;i++)
{

...
gtk_widget_set_events(tab_ebs[i],GDK_BUTTON_PRESS_MASK);
g_signal_connect (G_OBJECT (tab_ebs[i]), "button_press_event", G_CALLBACK (tab_clicked_cb), GINT_TO_POINTER(i));

}

这是回调:

void tab_clicked_cb (gpointer p)
{
printf("tab #%d clicked\n", GPOINTER_TO_INT(p));
}

我在标准输出中得到的是如下语句:

tab #6578976 clicked
tab #6579264 clicked
tab #6579552 clicked
tab #6579840 clicked

当我只有十个标签时。如何在 64 位系统上将整数传递给回调 fcn?谢谢。

最佳答案

没有,我已经成功了一半。事实证明,我的回调函数中还缺少该事件的参数。这是有效的表格:

void tab_clicked (GtkWidget *widget, GdkEventButton *ev, gpointer p)
{
printf("tab #%d clicked\n", GPOINTER_TO_INT(p));
}

关于c - 64位系统,GINT_TO_POINTER(i)/GPOINTER_TO_INT(p),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13782916/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com