使用typedef结构时出现未知类型错误

时间:2018-04-16 00:24:12

标签: c struct typedef

我知道有很多问题要问这个问题,但是我看了很多问题,但我仍然无法弄清问题是什么。这肯定是一个简单的错误,但我已经将这个结构声明和使用与我在同一个项目中使用的另一个进行了比较(没有错误),它们看起来和我一样。

我在trie.h中声明了这个结构:

#ifndef TRIE_H
#define TRIE_H

#include "fw.h"
#include "linked.h"

#define ALPHABET_SIZE 26

typedef struct T_node
{
   /* number of times this word has been found 
      (stored at end of word) */
   int freq;
   /* is_end is true if this T_node is the end of a word 
      in which case it */
   int is_end;
   /* each node points to an array of T_nodes
      depending on what letter comes next */
   struct T_node *next[ALPHABET_SIZE];
} T_node;

int add_word(T_node *root, char *word);
T_node *create_node(void);
void max_freqs(T_node *root, int num, List *freq_words, char *word,
               int word_len, int i);
void free_trie(T_node *root);

#endif

我在fw.h中使用它:

#ifndef FW_H
#define FW_H

#include <stdio.h>

#include "trie.h"

#define FALSE 0
#define TRUE 1

int read_file(FILE *in, T_node *root);
char *read_long_word(FILE *in);

#endif

我收到了这个错误:

In file included from trie.h:4:0,
             from trie.c:5:
fw.h:11:25: error: unknown type name T_node
 int read_file(FILE *in, T_node *root);
                         ^

编辑:我不认为这是链接问题的重复。如果您查看最佳答案,似乎所提供的结构与我的T_node当前所在的格式相同。此外,我没有得到与该问题相同的错误。

1 个答案:

答案 0 :(得分:4)

错误消息

In file included from trie.h:4:0,
             from trie.c:5:
fw.h:11:25: error: unknown type name T_node
 int read_file(FILE *in, T_node *root);
                         ^

表示trie.c包含trie.h,其中包含fw.h

但我们也看到fw.h包含trie.h。所以我们有一个完整的圈子。

如果可能,请使用前向声明的结构int read_file(FILE *in, struct T_node *root);并从trie.h中删除fw.h包含。