使用多个.h文件时,在哪里执行typedef

时间:2015-01-01 09:42:08

标签: c

我想知道在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'。

2 个答案:

答案 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