Go Down

Topic: Dudas punteros a funciones [Solucionado] (Read 538 times) previous topic - next topic

dieguitofernandez

Dec 26, 2011, 08:43 pm Last Edit: Dec 26, 2011, 09:14 pm by dieguitofernandez Reason: 1
Estoy probando algunas cosas, para ver como funciona, como se escribe el codigo, y llegue al siguiente caso, sin ninguna utilidad practica, simplemente para probar y ver si compila.
La idea es tener un método intermediario en la ejecución de ciertas funciones.
Code: [Select]
void setup() {                
 pinMode(13, OUTPUT);    
}

void loop() {
 void (* enciendePtr)();
 enciendePtr = encender;
 
 void (* apagarPtr)();
 apagarPtr = apagar;

 ejecutador( enciendePtr );
 delay(1000);              // wait for a second
 ejecutador( apagarPtr );
 delay(1000);              // wait for a second
}

void encender(){
 digitalWrite(13, HIGH);   // set the LED on
}
void apagar(){
   digitalWrite(13, LOW);    // set the LED off
}

void ejecutador( void(*ejecutable)()){
(*ejecutable)();
}


Pero me da el siguiente error:
Code: [Select]
sketch_dec26a.cpp: In function 'void loop()':
FuncionesComoParametros:13: error: 'ejecutador' was not declared in this scope


Alguna pista de que puede estar mal? Muchas Gracias.

fm

Vas a tener que declarar la función ejecutador antes. Puedes hacer de dos formas:
1. Declararla como extern void ejecutador ( void (*f)(void));
2. Mover la declaración de la función antes del sétup, en algún punto antes de usarla.

El problema es que el compilador no sabe cuanto espacio va a necesitar para invocarla y es el error que te esta dando.
   

dieguitofernandez

Buenisimo, ahi lo pude hacer andar. Muchas gracias por la respuesta y su velocidad!

fm

   

Go Up