Jeg laget en struktur som denne:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
og en variabel slik:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
I loop () kaller jeg test [i] .farge, test [i]. posisjon normalt.
Problemer starter når jeg vil utføre en funksjon.
Jeg laget to forsøk, en med streng og en med en funksjonserklæring. Med strengen har jeg ingen problemer med å bruke strcmp (), men det er ikke det jeg vil.
Jeg trenger å vite hvordan jeg kan lagre 2 forskjellige funksjoner i strukturen og hvordan jeg kan utføre.
Takk på forhånd!
Kommentarer
- Kan du legge ut det du ' prøvde, vær så snill, og på hvilken måte fungerte det ikke '?
- Jot svar er det jeg trengte!
- Hvilket merke sa er hvis du legger ut flere koder, kan folk forstå hva du prøver å si bedre og hjelpe deg raskere. Jeg trodde du ville lagre to funksjonspeker i den ene strukturen etter det teksten din sier.
Svar
Typedef er ikke lenger nødvendig, ved å bruke «struct» med et navn, erklærer typen.
// 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"); }
Kommentarer
- Ikke nødvendig fordi hva? Fordi det er C ++?