Está haciendo una cosa incorrectamente: está intentando invocar su función 'ptr' antes de invocar 'función'.Lo que se suponía que hacer es pasar sólo un puntero a 'PTR' e invocar 'PTR' usando puntero pasado de 'función' de esa manera:
void ptr(int x)
{
printf("from ptr [%d]\n", x);
}
int function(int a, int b , void (*func)(int))
{
printf("from function a=[%d] b=[%d]\n", a, b);
func(a); // you must invoke function here
return 123;
}
void main()
{
function(10, 2, &ptr);
// or
function(20, 2, ptr);
}
que da:
from function a=[10] b=[2]
from ptr [10]
from function a=[20] b=[2]
from ptr [20]
que es lo que quería
para
function(20, 20, ptr(20));
a trabajar - que tendría que tener algo como:
// 'ptr' must return sth (int for example)
// if you want its ret val to be passed as arg to 'function'
// this way you do not have to invoke 'ptr' from within 'function'
int ptr(int);
int function(int, int , int);
Gracias a todos, me di cuenta. Aprendí mucho sobre los punteros a las funciones de esta pregunta. De nuevo, muchas gracias! –