|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 2
|
[C] passare una funzione come parametro di un altra funzione
ciao ragazzi!
Mi hanno dato da sistemare un progetto in C che prevede una situazione del genere: File experiment.c che chiama il void MyExp nel file MyExp.c Codice:
MyExp.c:
#include ...
#define .....
double ...
int ...
void MyExp(double a, double b, double(*ffunction)(double*))
{
....
...
double x;
ffunction(x); //questa chiamata la vede perfettamente
efunction (.....); //all interno di efunction devo chiamare ffunction
}
void efunction (..........)
{
..
ffunction(x); //la devo passare come parametro ad efunction
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
scusa, qual é la difficoltá? il codice é identico a quello di MyExp, che hai giá scritto:
Codice:
void MyExp(double a, double b, double(*ffunction)(double*))
{
efunction(ffunction);
}
void efunction(double (*ffunction)(double*))
{
double x;
ffunction(&x);
}
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Dec 2009
Messaggi: 2
|
per il double * hai ragione scusa dimenticanza mia mentre ricopiavo!
il problema nell altro sopraggiunge quando devo dichiarare il prototipo di efunction, se ci metto dentro double(*ffunction)(double*), mi dice che non può vedere forward (credo che intenda che non trova la dichiarazione di ffunction) |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Metti il prototipo di efunction prima di MyExp
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
Codice:
void efunction(double (*ffunction)(double*))
{
double x;
ffunction(&x);
}
void MyExp(double a, double b, double(*ffunction)(double*))
{
efunction(ffunction);
}
Codice:
void efunction(double (*ffunction)(double*));
void MyExp(double a, double b, double(*ffunction)(double*))
{
efunction(ffunction);
}
void efunction(double (*ffunction)(double*))
{
double x;
ffunction(&x);
}
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:33.



















