Closed mammut closed 11 years ago
Ok. Esto nunca fue un problema.
#include <stdio.h>
int resta(int, int);
int suma(int, int);
int nada();
typedef int (*puntero_a_funcion)(int, int);
int main(int argc, char const *argv[])
{
puntero_a_funcion snow[3];
snow[0] = &resta;
snow[1] = &suma;
snow[2] = &nada;
printf("Restar: %d\n", snow[0](10,2));
printf("Sumar: %d\n", snow[1](10,2));
printf("Nada: %d\n", snow[2](2,2));
return 0;
}
int resta(int a, int b) {
return a - b;
}
int suma(int a, int b) {
return a + b;
}
int nada() {
return 0;
}
Este ejemplo ilustra mi drama mental. Resulta que la función nada() no utiliza (int, int) y el typedef pide que sean funciones que retornen int, y que reciban 2 int en sus argumentos.
pues resulta que funciona igual, solo hay que pasarle ints a nada aunque no los utilice y no esten en su definición
El arreglo de punteros a funciones apunta a las 7 funciones del núcleo. pero dos de estas funciones (listar_eventos y vaciar_eventos) no reciben los mismos argumentos que el resto de las funciones, y por ende no se pueden apuntar desde el arreglo de punteros
typedef void (ptr_funcion)(evento );
Debería crearse un segundo tipo de dato:
typedef void (*ptr_funcion2)();
que apunte a funciones que retornan void y no reciben argumentos.