我想知道在c语言中使用多个.h文件时我需要做一个typedef。我有一个项目要做,并决定将函数分成两个单独的.c和.h文件,以便更容易找到某个函数。但我遇到的问题是我需要使用typedef定义两个类型,并且两个头文件需要知道这个类型是什么,否则我得到错误说类型未知或类似的东西。我已经尝试将typedef放在一个单独的.h文件中。
//in type.h
typedef struct
{
int val; /*Valeur de la case (0 si vide)*/
int n_candidats; /*Nombre de candidats possibles*/
int candidats[9]; /*liste de candidats*/
} T_case;
typedef struct
{
T_case grille[81]; /*vecteur de 81 cases*/
} T_sudoku;
但是当我将它包含在我的其他.h文件中时,它将无法正常工作,它会出现大量错误,如先前在此处定义的T_case,为...的冲突类型,注意:预期'T_sudoku'但参数为类型'T_sudoku'。
答案 0 :(得分:2)
将.h文件包含在多个.c文件中可能会导致此问题。 尝试像这样制作.h文件
#ifndef FILENAME_H
#define FILENAME_H
/// put all the definitions of the .h file here
#endif
答案 1 :(得分:1)
问题是,您多次包含type.h
(例如,在其他标题中,再次包含在.c文件中)。因此,有多个typedef。
要解决此问题,请使用标题文件顶部的include guard或#pragma once。