在c文件之间共享变量

时间:2017-02-18 11:34:09

标签: c

我知道有很多问题已经被问到这个具体的事情,但没有人帮助过我。

所以我有一个kernel.h文件和一个kernel.c文件。在kernel.c中我创建了3个双链表,我想在我的main中使用它位于不同的c文件中。我想要做的是我想使用另一个带有dlist.h的dlist.c文件中的Insert函数。

现在我在kernel.h文件中将3个列表声明为extern,并将它们包含在kernel.c和main.c中。在main.c中我包含了dlist.h以及列表的所有函数,在我的主要内容中我不能使用insert函数和我的一个列表,它只是说它没有定义。

1 个答案:

答案 0 :(得分:1)

一个好的做法是使用当你需要来自另一个模块的某个变量时调用的函数(在你的情况下是另一个文件):

kernel.c

//Since you have pointers, you have to use double pointers to change pointer where it points to (maybe sounds confusing)
void getLists(struct list** l1, struct list** l2) {
    *l1 = Readylist1;
    *l2 = Readylist2;
}

在main.c中的用法

//Declare pointers
struct list* l1, *l2;
//Get pointer values from kernel.c
getLists(&l1, &l2);

//Use your list here..