Go Down

Topic: Dudas punteros a funciones [Solucionado] (Read 575 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy