advertencia: pasar el argumento 2 de la eliminación de 'g_timeout_add_seconds'

Estoy usando 'g_timeout_add_seconds' en mi código. Pero cuando compilo se muestra el siguiente error

advertencia: pasar el argumento 2 de 'g_timeout_add_seconds'

g_timeout_add_seconds(1, mensaje_cb, datos); //uso

gboolean message_cb(Lista *datos) //prototipo

preguntado el 22 de mayo de 12 a las 14:05

1 Respuestas

No elimine la advertencia, arréglela.

El segundo parámetro de g_timeout_add_seconds es un puntero de funciónGSourceFunc) como sigue:

gboolean (*GSourceFunc) (gpointer user_data);

y gpointer es un puntero a void No está interesado en que uses List* data preferiblemente.

Cíñete al prototipo y si estás pasando un List* luego cámbielo dentro de la devolución de llamada.

contestado el 22 de mayo de 12 a las 15:05

^^ el tipo de devolución es gboolean y el parámetro es un puntero. ¿Qué está mal en mi prototipo de devolución de llamada?... ¿Qué es GSourceFunc. ¿Puedes darme algún ejemplo? user1410356

@user1410356: Estás pasando un List* no es un void*. Necesita cambiar su función de devolución de llamada para que tome un void* en su lugar y luego en la función de devolución de llamada emitida desde void* a List* usar reinterpret_cast. Para obtener detalles sobre GSourceFunc mirar (desarrollador.gnome.org/glib/2.30/…) y para el uso de reinterpret_cast hay algunas respuestas excelentes aquí (stackoverflow.com/questions/573294/when-to-use-reinterpret-cast) - Componente 10

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.