g_timeout_add:返回值始终为0

时间:2018-05-25 16:01:39

标签: c glib gnome gnome-3

请查看以下代码。

guint id = g_timeout_add (5000,(GSourceFunc)fun(), NULL);

bool fun()
{
return false;
}

问题1.我得到的身份证总是0。 问题2.根据手册页[https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-timeout-add]第一次,fun()应在5秒后调用,但它会像往常一样被调用。

任何人都可以帮助我获得正确的身份证,并在5秒后调用乐趣()。

我检查了日志,并显示以下错误。

(进程:369):GLib-CRITICAL **:g_timeout_add_full:断言'函数!= NULL'失败

我浏览了在线文件,但没有得到适当的答案。

1 个答案:

答案 0 :(得分:2)

要将函数指针传递给g_timeout_add(),您不应该调用要传递的函数:

guint id = g_timeout_add (5000,(GSourceFunc)fun(), NULL);

fun()返回false时,一旦转换为(GSourceFunc),它等同于NULL

正确的调用是:

guint id = g_timeout_add (5000,(GSourceFunc)fun, NULL);