Pomoc ze zmienną strukturalną

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 ++?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *