2014-05-21 6 views
0

내 대학용 프로젝트를 만들고 메이크 파일 im에 문제가있는 파일을 컴파일하는 중입니다. api.c api.h datastruct. c datastruct.h main.c 주에서는이 함수 호출이 : DovahkiinP new = NuevoDovahkiin(); NuevoDovahkiin() 함수는 다음과 같이 api.c api.c에 정의되어 있으며 DovahkiinPgcc 잘못된 형식의 'struct LadoSt'에 대한 'sizeof'의 오류 응용 프로그램을 컴파일

NuevoDovahkiin 함수()에 의해 지시 된 구조체 DovahkiinSt 정의된다 :

DovahkiinP NuevoDovahkiin(){ 
    DovahkiinP new_dovahkiin = NULL; 
    new_dovahkiin = calloc(1, sizeof(struct DovahkiinSt)); //Here is the problem 
    if(new_dovahkiin != NULL){ 
     new_dovahkiin->root = NULL; 
     new_dovahkiin->source = NULL; 
     new_dovahkiin->sink = NULL; 
     new_dovahkiin->tempflux = 0; 
    } 
return (new_dovahkiin); 
} 

api.h에 구조 DovahkiinSt의 정의입니다 :

typedef struct _DovahkiinSt_t { 
     vertex root; 
     vertex source; 
     vertex sink; 
     u64 tempflux; 
    }DovahkiinSt; 
    typedef DovahkiinSt *DovahkiinP; 

및 api.c 및 main.ci 모두

은 사용법 #include 내가 sizeof의 (구조체 DovahkiinSt)의 문제이다 것을 얻을 해달라고 "api.h" 이는

+2

@Oswald는 올바른 대답을 가지고 있지만'ptr = calloc (1, sizeof * ptr) '형식을 사용하여이 문제를 완전히 피할 수 있습니다. –

답변

4

sizeof(DovahkiinSt) 또는 sizeof(struct _DovahkiinSt_t)을 사용하십시오.

sizeof(struct DovahkiinSt)은 의미가 없습니다. DovahkiinStstruct _DovahkiinSt_t의 다른 이름입니다.