mammut / Remember-The-Milk

Tarea 1 de LP 2013.1 Remember The Milk en C
0 stars 0 forks source link

Problema arreglo de punteros a funciones #3

Closed mammut closed 11 years ago

mammut commented 11 years ago

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.

mammut commented 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