Vytvořil jsem strukturu takto:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
a a proměnná takto:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
Ve smyčce () volám test [i] .color, test [i] .position normálně.
Problémy začínají, když chci spustit funkci.
Vytvořil jsem dva pokusy, jeden s řetězcem a druhý s příkazem funkce. S řetězcem nemám žádné problémy s použitím strcmp (), ale není to to, co chci.
Potřebuji vědět, jak mohu do struktury uložit 2 různé funkce a jak mohu provést.
Předem děkujeme!
Komentáře
- Mohli byste zveřejnit, co jste ' ve vyzkoušel, prosím, a jakým způsobem to ' nefungovalo?
- Jot odpovědi je to, co jsem potřeboval!
- Jaká známka říkala je, pokud zveřejníte více kódu, lidé budou pravděpodobně schopni porozumět tomu, co se snažíte říci lépe, a rychleji vám pomoci. Myslel jsem, že chcete uložit dva funkční ukazatele do jedné struktury podle toho, co říká váš text.
Odpověď
Typedef již není potřeba, použití typu „struct“ s názvem 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"); }
Komentáře
- Není to nutné, protože co? Protože se jedná o C ++?