2012-11-11 2 views
0

위로 향하세요, 이것은 수업 과제를위한 것입니다. 알다시피, 학업 정직과 기타 등등.'int32_t'앞에 예상 지정자 - 한정자 목록이 있습니다.

typdef struct { 
    int32_t r[8]; 
    Seq_T m; 
    Seq_T lengths; 
    int32_t ctr; 
} UM_T; 

나는 클라이언트를 추가 할 때까지 모든이의 구현을 포함, 잘 컴파일되었습니다 : 이제

#include "um.h" 

int main(int argv, char* argc[]){              
    FILE* file = fopen(argc[1]);              
    UM_T* um = UM_new (file);               
    run(um);                   
}; 

컴파일러 (GCC)는 나에게 말한다

I는 다음과 같이 정의 된 구조체를 가지고 :

um.h:5: error: expected specifier-qualifier-list before 'int32_t' 

int32_t이 구조체 인 경우 수행 할 작업이 있습니다. 또는 내가 정의한 어떤 것이지만, 분명히 그렇지 않다. 어떤 아이디어?

+6

'컴파일러가 타입을 알고 #INCLUDE '있도록. –

답변

1
FILE* file = fopen(argc[1]); 

fopen 함수에는 두 개의 매개 변수가 있지만 하나의 인수 만 전달합니다. 그런 다음

는 :

run(um); 
}; 

^ 

당신은 후행 ;를 제거해야합니다.

또한 fopen에는 stdio.h이고 int32_t 유형에는 stdint을 포함해야합니다. 마지막으로

은 :

int main(int argv, char* argc[]) 

당신은 아마 의미 :

int main(int argc, char *argv[]) 

가 혼란을 피하기 위해.

물론 fopen 전화에서 argc[1] 대신 argv[1]을 사용해야합니다.

+0

마지막 발언에 관해서, OP는'argc [1]'을 사용하고 있습니다. 그래서 적어도 일관성이 있습니다 (당연히 그렇게해서는 안됩니다). –

+0

@ 대니얼 피셔 네, 아마도 이것에 관해서도 'fopen'을 수정해야한다고 덧붙여 야합니다. – ouah

+0

아, 알겠습니다. 감사. – codex1962

1
FILE *fopen(const char *path, const char *mode); 

위의 두 개의 매개 변수를 필요로하지만 하나를 전달하는 fopen() .IT의 선언입니다.

그것은 당신이 메시지를 오류 줄 것이다 :

too few arguments to function ‘fopen’ 

또한 구조체에 그렇게 포함하거나 int32_t을 사용하는 <sys/types.h>

관련 문제