我想知道如何在c语言中使用多个.h文件时需要执行typedef。我有一个项目要做,并决定将功能分成两个独立的.c和.h文件,以便更容易地定位某个功能。但我遇到的问题是我需要使用typedef定义两个类型,并且这两个头文件都需要知道这个类型是什么,否则我会得到类型未知或类似的错误。我曾尝试将typedef放在单独的.h文件中。在使用多个.h文件时在哪里做typedef
//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'类型的。
好的,谢谢,我是否对所有的.h文件或只使用typedef的文件执行此操作? – Ty1607
1)对原始问题的回答:将“typedef”放在任何标题中(例如“a.h”)。然后#将它包含在另一个头文件中(例如“b.h”)。 2)“#ifndef FILENAME_H”的答案 - 您应该*始终*使用此惯例,在* all *您的头文件中。 PS:他们被称为“包括卫兵”。你可以在这里阅读更多关于它们的信息(http://en.wikipedia.org/wiki/Include_guard)。 – FoggyDay
这是一个很好的做法,用于所有头文件。因为它阻止了相同变量的多重定义。 –