0

我有两个文件:getParams.ctree.c.

我想要做的是tnodetree.c我的getParams.c.

我不记得如何正确包含来自其他源文件的代码。

获取参数.c

#include <stdlib.h>

int main(int argc, char *argv[]) {

tnode *doublyLinked;

addtree(doublyLinked, argv[1]);

return 0;
}

树.c

/*
 *  Tree routines from Kernighan and Ritchie
 *  Chapter 6.
 */
#include <stdio.h>
#include <string.h>

#define EOS '\0'
#define LETTER 'a'
#define DIGIT '0'

#define MAXWORD 20


struct tnode{         /* the basic node */
     char *word;      /* points to the text */
     int count;           /* number of occurrences */
     struct tnode *left;  /* left child */
     struct tnode *right; /* right child */
};

main(){           /* word frequency count */
     struct tnode *root, *addtree();
     char word[MAXWORD];
     int t;

 root = NULL;
 while((t=getword(word, MAXWORD)) != EOF)
 if (t == LETTER)
     root = addtree(root,word);
 treeprint(root);
} 

... more code

我得到的错误

gcc getParams.c tree.c -o getParams

getParams.c: In function ‘main’:

getParams.c:5:2: error: unknown type name ‘tnode’

我可以得到你的帮助吗?

4

2 回答 2

2

I. 您应该tnode在单独的头文件中定义结构类型,并将该头文件包含在两个实现文件中。

二、这是 C,不是 C++。struct tnode { };不会自动定义类型名称tnode- 您必须手动执行此操作:

typedef struct tnode {
    /* foo */
} tnode;
于 2013-02-19T21:36:34.243 回答
0

您需要tnode在共享标头中声明,然后使用以下内容包含它:

#include "myheader.h"
于 2013-02-19T21:36:13.550 回答