구조체 변수

다음과 같은 구조체를 만들었습니다.

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

다음과 같은 변수 :

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

loop ()에서 test [i] .color, test [i] .position을 정상적으로 호출합니다.

기능을 실행하고 싶을 때 문제가 시작됩니다.

나는 두 번의 시도를했습니다. 하나는 문자열이고 다른 하나는 함수 문입니다. 문자열을 사용하면 strcmp ()를 사용하는 데 아무런 문제가 없지만 원하는 것이 아닙니다.

구조체에 두 가지 다른 함수를 저장할 수있는 방법과 실행할 수있는 방법을 알아야합니다.

p>

미리 감사합니다!

댓글

  • 당신이 ' ve를 게시 할 수 있습니까? 시도해보세요. 어떤 방식으로 작동하지 않았나요? ' 작동하지 않았나요?
  • 작업 답변이 필요했습니다.
  • 어떤 마크가 말하고 있었나요? 더 많은 코드를 게시하면 사람들이 당신이 말하는 것을 더 잘 이해하고 더 빨리 당신을 도울 수있을 것입니다. 나는 당신의 텍스트가 말하는대로 하나의 구조체에 두 개의 함수 포인터를 저장하고 싶다고 생각했습니다.

답변

이름과 함께 “struct”를 사용하여 유형을 선언하면 typedef가 더 이상 필요하지 않습니다.

// 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"); } 

댓글

  • 무엇 때문에 필요하지 않습니까? C ++이기 때문입니까?

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다