Supponendo che tutte le funzioni condividano lo stesso tipo di ritorno, è valido chiamarle ognuna con un puntatore di funzione "generico", che viene dichiarato con parentesi vuote (quindi non specifica gli argomenti)?È consentito chiamare funzioni con prototipi diversi da un puntatore a funzione pseudo-generica?
Ecco un esempio di codice, che lo illustra:
#include <stdio.h>
void fun1(void)
{
printf("fun1\n");
}
void fun2(int a)
{
printf("fun2: %d\n", a);
}
void fun3(int a, int b)
{
printf("fun3: %d %d\n", a, b);
}
int main(void)
{
void (*pf)(); // pseudo-generic function pointer
pf = fun1;
pf();
pf = fun2;
pf(0);
pf = fun3;
pf(1, 2);
return 0;
}
Possibile duplicato di [Puntatore funzione senza tipi di argomenti?] (Http://stackoverflow.com/questions/20835534/function-pointer-without-arguments-types) –
Interessante domanda. Valido come in "compilazione ed esecuzione come previsto?" si, dice "compilare con il lavoro di' -Wall' senza avvertimenti? " sui miei compilatori sì :-) – Dilettant
Sì, nessun avvertimento nemmeno in modalità paranoico '-Wall -Wextra -pedantic -Wconversion' di GCC 4.9 ... @Dilettante – alk