extern
для переменных, а не для определения типов.Вы должны просто включить заголовок во все модули, которые должны знать о struct node
;который заменяет содержимое всего заголовка, встроенное.
Что вы должны , а не сделать, это включить C-файл в другой C-файл.Вместо этого вы должны объявить прототипы общих функций в заголовке.
Например,
#include "node.h"
int main()
{
// whatever
}
становится, если вы поместите прототип для node_insert
в заголовок,
typedef struct node node;
struct node
{
int my_reg;
node *left;
node *right;
};
struct node *node_insert(struct node *, int); // or whatever the prototype is
int main()
{
// whatever
}
после того, как препроцессор C завершил работу с ним, поэтому struct node
и node_insert
видны в main
.