2011-03-14 2 views
11

I는 다음과 같이 불투명 한 구조와 관련 API를 정의했습니다 :C의 형식 정의 (ED) 불투명 포인터

typedef struct foo foo; 
foo *create_foo(...); 
delete_foo(foo *f); 

내 C 파일의 구조를 정의 할 수 없습니다입니다. 재정의 오류가 발생합니다.

typedef struct foo { 
    int implementation; 
}foo; 

나는 형식 정의하지 않고 C 파일 foo는 사용할 수 있어요 그러나 나는 형식 정의가 (즉 foo는 *로 직접 사용)합니다. 방법이 있습니까?

답변

18

이미 헤더에 typedef이 있으니 구현에 typedef이없는 경우이를 포함하고 struct foo을 정의하십시오.

foo.h

:

typedef struct foo foo; 
foo *create_foo(...); 
delete_foo(foo *f); 

foo.c :

#include <foo.h> 

struct foo { int implementation; }; 
/* etc. */ 
+0

사실. 나는 그것을 다시 typedefing하지 않고 c 파일에서 사용할 수있다. 그런 질문을하는 벙어리. 저를 깨닫게 해줘서 고마워요. :) – Manish