Fiz uma estrutura como esta:
typedef struct { int color[3]; int positions[4]; char init[20]; void (*fn)(); } buttons;
e um variável como esta:
button test[1] = { {{0,0,0},{0,0,100,100},"getSomething",setSomething} }
Em loop () eu chamo test [i] .color, test [i] .position normalmente.
Os problemas começam quando eu quero executar uma função.
Fiz duas tentativas, uma com string e outra com uma declaração de função. Com a string, não tenho problemas para usar um strcmp (), mas não é o que eu quero.
Eu preciso saber como posso armazenar 2 funções diferentes na estrutura e como posso executá-las.
Obrigado desde já!
Comentários
- Você poderia postar o que ' ve tentei, por favor, e de que forma não ' não funcionou?
- Jot respostas é o que eu precisava!
- O que a marca estava dizendo é que se você postar mais código, as pessoas poderão entender melhor o que você está tentando dizer e ajudá-lo mais rapidamente. Achei que você queria armazenar dois ponteiros de função em uma estrutura de acordo com o que seu texto diz.
Resposta
O typedef não é mais necessário, usando a “estrutura” com um nome declara o tipo.
// 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"); }
Comentários
- Não é necessário porque o quê? Porque é C ++?