【问题标题】:g_timeout_add: return value is always 0g_timeout_add:返回值始终为 0
【发布时间】:2018-05-25 16:01:39
【问题描述】:

请看下面的代码。

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

bool fun()
{
return false;
}

问题 1. 我得到的 id vale 始终为 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' 失败

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

【问题讨论】:

    标签: c glib gnome gnome-3


    【解决方案1】:

    要将函数指针传递给 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-05
      • 2018-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-05-07
      相关资源
      最近更新 更多