gpt4 book ai didi

c - Malloced全局变量实现(C)

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:21 25 4
gpt4 key购买 nike

我想创建一个跨多个 .c 文件全局可用的链表。

我已经阅读了如何执行此操作,但我无法确定是什么导致了我的问题。

我在 LinkedList.h 中用 extern 声明变量:

extern LinkedList* canQueue;

然后在 main.c 中,我通过将变量发送到 LinkedList.c 中的函数来初始化变量,如下所示:

LinkedList *canQueue=createList();

这是 LinkedList.c 中的创建函数:

LinkedList* createList() /*creates empty linked list*/
{
LinkedList* myList;
myList = malloc(sizeof(LinkedList));
myList->head = NULL;
return myList;
}

然后我想在另一个文件 cpu.c 中使用 canQueue。我已将 LinkedList.h 包含在 cpu.c 中,因此据我所知,此时链接列表应该在此处可用。但是当我尝试访问它时出现错误:

undefined reference to 'canQueue'

我是否遗漏了什么或做错了什么?

最佳答案

看来你根本就没有定义这样一个全局变量。如果此代码编译:

LinkedList *canQueue = createList();

那么它就不是“全局”(文件范围)变量。在文件范围内定义它并仔细初始化它,这样你就不会用局部变量遮蔽它。总而言之,做这样的事情:

// at global scope
LinkedList *canQueue;

void initialize() // or whatever
{
canQueue = createList();
}

关于c - Malloced全局变量实现(C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16353665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com