PDA

Visualizza la versione completa : [C] Passare una funzione (a più parametri) come parametro ad un'altra funzione


Gerbantess
03-04-2012, 11:21
Ciao a tutti,
sono nuovo e non sono un programmatore. Ho un problema che riguarda la sintassi.
Devo passare una funzione a più parametri ad una funzione che in ingresso richiede una funzione di un solo parametro, ma non so come fare.
Mi spiego meglio: nel mio programma principale calcolo i parametri (tutti array di double) a,b,c della funzione double f(a,b,c,x), dove anche x è un array di double; poi devo passare alla funzione void g(p, double(*h)(double[]),...), che calcola l'array x, la funzione f, come funzione di un solo parametro.
Se f fosse già funzione di un solo parametro, ad esempio f(x) mi basterebbe scrivere
g(p, f,...);
Ma come faccio in questo caso? Vi dico subito che non posso passare a g i vettory a,b,c perchè è una routine presa da un libro...potrei pensare di modificarla, ma prima di farlo preferisco chiedere aiuto a voi. Spero di essere stato chiaro.
Per la cronaca, g è una routine per minimizzare la funzione in ingresso rispetto ai parametri contenuti in x.
Grazie per le risposte, ciao!

shodan
03-04-2012, 12:40
Dovrebbe essere sufficiente un cast (Windows utilizza un sistema simile per le DLL caricate dinamicamente).


typedef double (*DOUBLE_PROC) (double[]);

typedef double (*MY_FUNCTION)( parametri vari)

g(p,(DOUBLE_PROC)f,...);

nella funzione g

void g(quel che è, DOUBLE_PROC f, ...) {
MY_FUNCTION myfunction = (MY_FUNCTION) f;

(*myfunction)(parametri);

}

Questo in linea di principio. Ma se non mostri i prototipi esatte delle funzioni in gioco, non si può dire molto di più.

Loading