请查看以下代码。
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'失败
我浏览了在线文件,但没有得到适当的答案。
答案 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);