2016-11-02 2 views
-1

Я пытаюсь решить игру жизни Конвея в C. Я написал файл .h, содержащий все мои функции, но я получаю следующую ошибку в файле заголовка: ошибка: неизвестный тип название "матрица"ошибка: неизвестно имя типа struct

Это начало файла заголовка, который содержит мою STRUCT декларацию и 1-й функции:

#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

В C вы не можете опустить ключевое слово 'struct',' matrix [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; } matrix; '. – JohnB

ответ

4

Вы определили структуру, называемую struct matrix. Это не то же самое, что и matrix, так как в определении структуры должно предшествовать ключевое слово struct.

Изменить определение функции для:

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; 

Или SPEC римента декларированию Явно, что структура:

struct matrix a[MAX][MAX]; 
0

Вместо

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

использование

void intro_date(int nr_elem, struct matrix a[MAX][MAX]){ 
Смежные вопросы