Ajuda com a variável de estrutura

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 ++?

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *