Hice una estructura como esta:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
y una variable como esta:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
En loop () llamo test [i] .color, test [i] .position normalmente.
Los problemas comienzan cuando quiero ejecutar una función.
Hice dos intentos, uno con una cadena y otro con una declaración de función. Con la cadena no tengo problemas para usar strcmp () pero no es lo que quiero.
Necesito saber cómo puedo almacenar 2 funciones diferentes en la estructura y cómo puedo ejecutar.
¡Gracias de antemano!
Comentarios
- ¿Podrías publicar lo que ' ve Intenté, por favor, y ¿de qué manera no ' no funcionó?
- ¡Lo que necesitaba era una simple respuesta!
- ¿Qué marca estaba diciendo? es decir, si publica más código, la gente podrá comprender mejor lo que está tratando de decir y ayudarlo más rápido. Pensé que deseaba almacenar dos punteros de función en una estructura según lo que dice su texto.
Respuesta
El typedef ya no es necesario, el uso de la «estructura» con un nombre declara el tipo.
// Arduino Uno struct buttons { int color[3]; int positions[4]; char init[20]; void (*fn)(); }; // Declare the functions here, or use prototyping void func1(); void func2(); buttons test[] = { { {0,0,0}, {0,0,100,100}, "getSomething", func1 }, { {40,40,40}, {50,50,10,10}, "somethingElse", func2 }, }; void setup() { Serial.begin(9600); Serial.println("Calling the functions:"); test[0].fn(); test[1].fn(); } void loop() { } void func1() { Serial.println("func1"); } void func2() { Serial.println("func2"); }
Comentarios
- No es necesario porque ¿qué? ¿Porque es C ++?