Hjælp til strukturvariablen

Jeg lavede en struktur som denne:

typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons; 

og en variabel som denne:

button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} } 

I loop () kalder jeg test [i] .farve, test [i]. position normalt.

Problemer starter, når jeg vil udføre en funktion.

Jeg lavede to forsøg, en med streng og en med en funktionserklæring. Med strengen har jeg ingen problemer med at bruge en strcmp (), men det er ikke, hvad jeg vil.

Jeg har brug for at vide, hvordan jeg kan gemme 2 forskellige funktioner i strukturen, og hvordan jeg kan udføre.

På forhånd tak!

Kommentarer

  • Kan du sende det, du ' ve prøvet, takk, og på hvilken måde fungerede ' ikke?
  • Jot svar er, hvad jeg havde brug for!
  • Hvilket mærke sagde er, hvis du sender flere koder, kan folk muligvis forstå, hvad du prøver at sige bedre og hjælpe dig hurtigere. Jeg troede, du ville gemme to funktionsmarkører i den ene struktur ved, hvad din tekst siger.

Svar

Typedef er ikke længere nødvendig ved at bruge “struct” med et navn, der 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ødvendigt, fordi hvad? Fordi det er C ++?

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *