sisoputnfrba / foro

Foro de consultas para el trabajo práctico
148 stars 7 forks source link

Pasar puntero a funcion por varias funciones #3685

Closed papiness77 closed 5 months ago

papiness77 commented 5 months ago

Buenas, to estaba probando hacer esto pero no me estaria funcionando, no se si estoy entendiendo bien como se pasa un puntero a funcion. Tengo esta funcion a la cual le paso show_pid, y show_pid esta definida en el espacio de variables globales, la funcion iterate la ejecuto en otra funcion.

void show_pid(void* process){
    t_pcb* pcb = (t_pcb*)process ;
    log_info(logger, " %d ", pcb->pid); 
}

iterate_queue_mutex(queue_ready, show_pid);

Despues iterate queue mutex esta definida asi, y yo propago el puntero funcion pasandolo asi nomas como func.

void iterate_queue_mutex(t_queue_mutex* queue_mutex, void(*func)(void*)){
    pthread_mutex_lock(&(queue_mutex->mutex));
    list_iterate(queue_mutex->queue, func);
    pthread_mutex_unlock(&(queue_mutex->mutex));
}

y lo que recibe list_iterate es:

void list_iterate(t_list *, void(*closure)(void*));

Saludos

FredeHG commented 5 months ago

Hola buenas!

Y que te dice el compilador? o por que decís que no te funciona?

Saludos!

papiness77 commented 5 months ago

Hola, porque la seccion del codigo donde uso esto no funciona y el compilador no me tira ningun error. No sabia si lo que no funciona es la parte esta.

iago64 commented 5 months ago

Buenas! Cómo va?

Si el compilador no te tira ningun error, probaste debugueando? Llega a entrar a la función?

Saludos.-

papiness77 commented 5 months ago

Hola, el debugger no me funciona y todavia no pude ir al soporte porque justo cuando lo hacen estoy en clase de la materia. Igual si, llega a entrar a la funcion. Pero estoy haciendo bien lo del puntero a funcion?

iago64 commented 5 months ago

Buenas!

El tema del debugger, por esas casualidades, estas abriendo la carpeta desde Open Folder o estas abriendo el Workspace de VSCode? Porque si lo abris con Open Folder es muy posible que uno de los problemas que tengas es que no puedas usar correctamente el debugger.

Respecto a lo del puntero a función, vuelvo un poco a lo que te pregunto Fede y a mi post anterior, ¿Estas probando lo que haces? En el papel lo que estás haciendo del puntero a función no pareciera estar mal, pero como no somos compiladores / debuggers humanos de C, siempre es recomendable que lo pruebes y veas si funciona.

Saludos.-

papiness77 commented 5 months ago

Si obvio tiene sentido lo que dijiste en el segundo parrafo. Yo abro la carpeta padre del proyecto, parandome en ella desde la consola y ejecutando code . Despues debugeo parandome en el main de algun modulo y tocando el bichito de arriba, quizas debugear desde la consola funcionaria? No se como debugear desde la consola.

iago64 commented 5 months ago

Buenas!

Ahora si, todo tiene mas sentido, en el repo en la raiz tenes un archivo que se llama tp0.code-workspace Si usas la opción de Open Workspace From File si vas a poder debuguear desde vscode que es mucho mas feliz que hacerlo desde consola con gdb.

image

Saludos.-