Zrobiłem taką strukturę:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
i zmienna taka jak ta:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
W loop () wywołuję test [i] .color, test [i] .position normalnie.
Problemy zaczynają się, gdy chcę wykonać jakąś funkcję.
Wykonałem dwie próby, jedną z ciągiem znaków, a drugą z instrukcją funkcyjną. Dzięki łańcuchowi nie mam problemów z używaniem strcmp (), ale to nie jest to, czego chcę.
Muszę wiedzieć, jak mogę przechowywać 2 różne funkcje w strukturze i jak mogę wykonać.
Z góry dziękuję!
Komentarze
- Czy możesz opublikować, co chcesz ' ve próbowałem, proszę, i w jaki sposób nie ' nie działa?
- Potrzebowałem wielu odpowiedzi!
- Co mówił znak jest to, że jeśli opublikujesz więcej kodu, ludzie będą w stanie lepiej zrozumieć, co próbujesz powiedzieć, i pomóc ci szybciej. Pomyślałem, że chcesz przechowywać dwa wskaźniki funkcji w jednej strukturze według tego, co mówi twój tekst.
Odpowiedź
Typedef nie jest już potrzebny, użycie „struct” z nazwą deklaruje typ.
// 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"); }
Komentarze
- Niepotrzebne, bo co? Ponieważ to C ++?