g_timeout_add: возвращаемое значение всегда 0 - PullRequest
0 голосов
/ 25 мая 2018

Пожалуйста, посмотрите в приведенном ниже коде.

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

bool fun()
{
return false;
}

проблема 1. Идентификационная ячейка, которую я получаю, всегда равна 0. проблема 2. Согласно man-странице [https://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-timeout-add] для первойtime, fun () должен получить вызов через 5 секунд, но он вызывается как обычно.

Может ли кто-нибудь помочь мне получить правильное значение id и вызвать функцию fun () через 5 секунд

Я проверил журнал, и показывается ошибка ниже.

(процесс: 369): GLib-CRITICAL **: g_timeout_add_full: утверждение 'функция! = NULL' не выполнена

Я ушелчерез онлайн-документы, но не получил соответствующий ответ.

1 Ответ

0 голосов
/ 25 мая 2018

Чтобы передать указатель на функцию в 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);
...