Ik heb een structuur als deze gemaakt:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
en een variabele zoals deze:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
In loop () roep ik test [i] .color, test [i] .position normaal aan.
Problemen beginnen wanneer ik een functie wil uitvoeren.
Ik heb twee pogingen gedaan, een met string en een met een functie-statement. Met de string heb ik geen problemen met het gebruik van een strcmp () maar het is niet wat ik wil.
Ik moet weten hoe ik 2 verschillende functies in de struct kan opslaan en hoe ik het kan uitvoeren.
Bij voorbaat dank!
Reacties
- Kunt u posten wat u ' ve geprobeerd, alstublieft, en op welke manier ' niet werkte?
- Jot-antwoorden was wat ik nodig had!
- Welk teken zei is dat als je meer code plaatst, mensen misschien beter kunnen begrijpen wat je probeert te zeggen en je sneller kunnen helpen. Ik dacht dat je de aanwijzer met twee functies in de ene structuur wilde opslaan op basis van wat je tekst zegt.
Answer
De typedef is niet langer nodig, het gebruik van de “struct” met een naam geeft het type aan.
// 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"); }
Reacties
- Niet nodig, want wat? Omdat het C ++ is?