2012-11-13 3 views
1

"타입의 이름이없는"아두 이노 서보 구조체 나는 서보 객체를 포함하는 구조체를 사용하는 아두 이노 프로그램을 실행하기 위해 노력하고있어 그것은 나에게이 오류 제공

error: 'leg' does not name a type 

내가 뭔가를하고 있다고 생각을 메모리 관리에 문제가 있지만 상당히 익숙하므로 도움이 필요합니다.

이 내 코드입니다 :

#include <Servo.h> 

typedef struct{ 
Servo hip; 
Servo shin; 
Servo foot; 
}leg; 



int currentPin = 0; //this is the pin that the leg will be attached to 


leg getLeg(void){ 
    leg newLeg; 
    newLeg.hip.attach(currentPin++); 
    newLeg.shin.attach(currentPin++); 
    newLeg.foot.attach(currentPin++); 

    return newLeg; 

} 

void setup() 
{ 
    leg frontLeft = getLeg(); 
    leg frontRight = getLeg(); 
    leg backRight = getLeg(); 
    leg backLeft = getLeg(); 
} 


void loop() 
{ 


} 
+0

'struct_Name'은 어디에 표시됩니까? – laifjei

+0

나는 오류를 일반화하려고 시도 했었지만 지금은 분명해야한다. – Jordan

답변

2

이 대신

struct legtype { 
    Servo hip; 
    Servo shin; 
    Servo foot; 
}; 

typedef legtype leg; 

가 그 일을 하는가를 시도?

건배,

+0

아니요, 죄송합니다, 이전과 동일한 오류가 발생했습니다. – Jordan

+1

'C'로 질문에 태그를 추가했습니다. 정말 그렇습니까? 아니면 C++로 컴파일 중입니까? 어떤 경우에,'struct leg newLeg;를 사용하는 대신'struct'를'typedef'하는 이유는 무엇입니까? –

+0

예 C, 나는 C 만 알고 있으며 나는 지금까지 잘 해왔다. C++ 일 수 없다면? – Jordan

1

구조체를 헤더 파일에 정의하여이를 해결했습니다. arduino에서 이름이 "whatever.h" 인 새 탭을 만들기 위해 whatever.h의 구조체를 정의합니다. 은 주 파일의 whatever.h를 포함합니다.

+0

나를 위해 유일한 옵션. 하지만 struct-typedef가 별도의 헤더 파일에 있어야하는 이유를 이해할 수 없습니다. 그건 그렇고, 나는 Arduino를 ESP8266에 사용한다. –

관련 문제