g_timeout_add: return 值始终为 0

g_timeout_add: return value is always 0

请看下面的代码。

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

bool fun()
{
return false;
}

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

任何人都可以帮助我获得正确的 id 值并在 5 秒后调用 fun()。

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

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

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

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

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

作为 fun() return false,一旦转换为 (GSourceFunc) 就等同于 NULL.

正确的调用是:

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