2012-09-08 3 views
0

함수에 typedef struct 포인터를 전달하려고하는데 컴파일러가이 오류 메시지와 함께 불평하고 있습니다. 오류 : 알 수없는 형식 이름 'RootP'. 여기 ... 코드이다함수에 대한 typedef struct 포인터

int main() 
{ 
    typedef struct Root 
    { 
     struct Root *child; 
    }*RootP; 
    RootP rootNode = malloc(sizeof(struct Root)); 
    rootNode->child = NULL; 
    .... 

} 

void mkdir(RootP rootNode, char param2[60], char pwd[200]) 
{ 
    ... 
} 

답변

5

structmain가 외부 수 있으므로 main 함수 전에

typedef struct Root 
{ 
    struct Root *child; 
}*RootP; 

이동한다. 프로그램이 충분히 큰 경우 일부 헤더 파일 (*.h)

으로 옮길 것을 고려하고 mkdir 이름을 사용하지 마십시오. Posix에 정의되고 Linux에서는 mkdir(2) 시스템 호출을 나타냅니다.

저는 typedef struct Root *RootP;이 예쁜 코드라고 생각하지 않습니다. 일반적으로 C가 포인터라는 것을 한 눈에보고 싶습니다. 대신 struct root_st을 선언하고 typedef struct root_st Root; (Gtk도이를 사용하거나 매우 유사한 코딩 규칙)을 사용합니다. 코드 Root* rootnode. 그러나 그것은 논쟁의 여지가 있고 취향의 문제입니다.

+0

'일부 헤더 파일로 이동': 매우 좋습니다. – xtofl

+0

@xtofl 나는 또한 귀하의 간결한 답변을 원했고, 당신은 그것을 삭제해야합니다 :-) – cnicutar

+0

빠른 답변과 팁을 보내 주셔서 감사합니다. mkdir에 대한 이유로 유닉스 명령어를 받아들이는 시뮬레이트 된 파일 시스템을 만들고 있습니다. – boutrosc

관련 문제