2016-11-02 5 views
-1

C. Conway의 Game of Life 문제를 해결하려고합니다. 모든 기능을 포함하는 .h 파일을 작성했지만 헤더 파일에 다음 오류가 표시됩니다. 오류 : 알 수없는 형식오류 : 알 수없는 형식 이름 구조체

#include<stdio.h> 
#include<string.h> 
#define MAX 1000 
struct matrix{ 
    int Val, Next; 
}; 
void intro_date(int nr_elem, matrix a[MAX][MAX]){ 
    int x,y; 
    printf("Enter the line and the column of the element which you wish to read within the matrix: \n"); 
    while(nr_elem){ 
     scanf("%d%d",&x,&y); 
     a[x][y].Val=1; 
     --nr_elem; 
    } 
} 
+3

'struct'[MAX] [MAX]'는'struct matrix a [MAX] [MAX]'이어야만합니다. (또는'typedef'를 사용하십시오) –

+0

여기에 설명되어 있습니다 : http://stackoverflow.com/questions/1675351/typedef-struct-vs-struct-definitions – germanfr

+0

또는 정의는'typedef struct matrix { int Val, Next; } 행렬; – JohnB

답변

4

사용

void intro_date(int nr_elem, matrix a[MAX][MAX]){ 

의 당신은 struct matrix라는 구조를 정의했다. 구조체 정의 앞에 struct 키워드를 붙여야하므로 matrix과 같지 않습니다.

가 함수의 정의를 변경

: 또한

void intro_date(int nr_elem, struct matrix a[MAX][MAX]) 

, 당신은 헤더 파일에 코드를 넣으면 안됩니다. 타입 정의와 선언 만 거기에 속합니다. 두 개 이상의 소스 파일이이 헤더를 포함하는 경우, 각각에 대해 작성된 오브젝트 파일에는 intro_date() 기능의 사본이 포함됩니다. 해당 파일을 링크하려고 시도하면 intro_date()이 재정의되었다는 오류가 표시됩니다.

intro_date의 정의는 정확히 하나의 소스 파일에 있어야합니다. 그런 다음 헤더에는 선언 만 포함됩니다.

1

사용

typedef struct matrix{ 
    int Val, Next; 
} matrix; 

또는 사양 : 이름 "매트릭스"

이 내 구조체 선언과 1 차 함수를 포함하는 헤더 파일의 시작이다 이 구조체는 것을 명시 적으로 선언을 쓸어 :

struct matrix a[MAX][MAX]; 
0

대신

void intro_date(int nr_elem, struct matrix a[MAX][MAX]){