szerkezeti változóval kapcsolatban. Ehhez hasonló struktúrát készítettem:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
és egy Ilyen változó:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
A ciklusban () a [i] .color, az [i] .pozíciót szokásosan meghívom.
A problémák akkor kezdődnek, amikor egy funkciót szeretnék végrehajtani.
Két attemp-t készítettem, az egyiket karakterlánccal, a másikat pedig egy function utasítással. A karakterlánccal nincsenek problémáim az strcmp () használatával, de nem ezt akarom.
Tudnom kell, hogyan tárolhatok 2 különböző függvényt a struktúrában, és hogyan tudom végrehajtani.
Előre is köszönöm!
Megjegyzések
- Fel tudná adni, mit ' ve próbáltam, kérem, és milyen módon nem működött '?
- A válaszok megválaszolására van szükségem!
- Milyen jelet mondott Ha több kódot teszel közzé, az emberek képesek lesznek megérteni, hogy mit akarsz jobban mondani, és gyorsabban tudsz segíteni. Úgy gondoltam, hogy két funkciómutatót szeretnél az egy struktúrában tárolni a szöveged mondanivalója szerint. >
Válasz
A typedef már nem szükséges, a “struct” névvel történő használata deklarálja a típust.
// 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"); }
Megjegyzések
- Nincs szükség, mert mi? Mert ez C ++?