Pages: [1]   Go Down
Author Topic: Dudas punteros a funciones [Solucionado]  (Read 399 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 52
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
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:
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.
« Last Edit: December 26, 2011, 03:14:23 pm by dieguitofernandez » Logged

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 38
Posts: 2173
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

   

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 52
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Málaga, Spain
Offline Offline
Edison Member
*
Karma: 38
Posts: 2173
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Sin problemas, un saludo.
Logged

   

Pages: [1]   Go Up
Jump to: