0
我试图将一个值传递给g_timeout_add_seconds()中使用的函数,但它不像预期的那样工作。它正常工作时,我将一个值传递给函数。我是否错误地使用了g_timeout_add_seconds()?将值传递给g_timeout_add_seconds()不起作用?
typedef struct { int x, y; } xy_t;
void fn_init(void)
{
xy_t xy;
int z;
xy.x = 12;
xy.y = 23;
z = 123;
pass_thru_test1(&xy);
pass_thru_test2(&xy);
pass_thru_test3(&z);
z = 234;
g_timeout_add_seconds(1, pass_thru_test3, &z);
}
gboolean pass_thru_test1(xy_t *data)
{
xy_t *point = (xy_t *)data;
printf("Pass Thru Test 1: x:%d, y:%d\n", point->x, point->y);
return TRUE;
}
gboolean pass_thru_test2(gpointer data)
{
xy_t *p = (xy_t *)data;
printf("Pass Thru Test 2: x:%d, y:%d\n", p->x, p->y);
return TRUE;
}
gboolean pass_thru_test3(gpointer data)
{
int *point = (int *)data;
printf("Pass Thru Test 3: %d\n", *p);
return TRUE;
}
结果是:
Pass Thru Test 1: x:12, y:23
Pass Thru Test 2: x:12, y:23
Pass Thru Test 3: 123
Pass Thru Test 3: 724126128
Pass Thru Test 3: 724126128
Pass Thru Test 3: 724126128
这只是一个int,所以GPOINTER_TO_INT和GINT_TO_POINTER也是一个选项。 – nemequ