1. ホーム
  2. c

[解決済み] エラー: 不明な型名 構造体

2022-02-08 23:43:31

質問

C言語でConway's Game of Lifeを解こうとしています。すべての関数を含む.hファイルを書きましたが、ヘッダーファイルで次のエラーが発生しました。 error: unknown type name "matrix"

これはヘッダーファイルの冒頭で、構造体の宣言と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;
    }
}

解決方法は?

という構造体を定義しました。 struct matrix . これは matrix 構造体の定義の前には、必ず struct キーワードを使用します。

関数の定義を変更します。

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

また、ヘッダーファイルには、コードを入れてはいけません。 そこにあるのは型定義と宣言だけです。 もし複数のソースファイルにこのヘッダーが含まれていた場合、それぞれで作成されるオブジェクトファイルには、関数 intro_date() . これらのファイルをリンクしようとすると、次のようなエラーが発生します。 intro_date() が再定義されました。

の定義は intro_date は、ちょうど1つのソースファイルに存在する必要があります。 そうすると、ヘッダにはその宣言だけが含まれることになります。