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);
请看下面的代码。
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);