Am făcut o structură ca aceasta:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
și un variabilă ca aceasta:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
În buclă () numesc test [i] .color, test [i] .poziție normal.
Problemele încep când vreau să execut o funcție.
Am făcut două tentative, unul cu șir și unul cu o instrucțiune funcțională. Cu șirul nu am probleme cu utilizarea unui strcmp (), dar nu este ceea ce vreau.
Trebuie să știu cum pot stoca 2 funcții diferite în struct și cum pot executa.
Vă mulțumim anticipat!
Comentarii
- Ați putea posta ceea ce ați ' am încercat, vă rog, și în ce fel nu a funcționat '?
- Aveam nevoie de răspunsuri la notă!
- Ce semn a spus este dacă postezi mai multe coduri, este posibil ca oamenii să poată înțelege mai bine ceea ce încerci să spui și să te ajute mai repede. Am crezut că vrei să stochezi un pointer cu două funcții într-o singură structură prin ceea ce spune textul tău.
Răspuns
Tipul tip nu mai este necesar, folosind „struct” cu un nume declară tipul.
// 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"); }
Comentarii
- Nu este necesar pentru că ce? Pentru că este C ++?