gpt4 book ai didi

内置 malloc 的 C 隐式声明

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:13 24 4
gpt4 key购买 nike

我正在开发一个项目,其中有一个 header ,它定义了 listlist_elem 结构,很像实际的 c 库(列表的实现没有错误).我正在编写一个使用列表实现的源文件,我收到以下警告:

warning: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration]

这是list_elem结构的声明

/* List element. */
struct list_elem
{
struct list_elem *prev; /* Previous list element. */
struct list_elem *next; /* Next list element. */
};

我在这里使用:

//creates a list element
struct list_elem le_current;
&le_current = (struct list_elem *)malloc(sizeof(struct list_elem));

我知道还有另一个问题有同样的问题,但与那个人不同,我确实包含了

#include <stdlib.h>

还有定义列表的标题

#include "lib/kernel/list.h"

最佳答案

几乎可以肯定 <stdlib.h>未包含在获取编译器警告消息 malloc 的代码之前正在隐式声明。您应该寻找以下情况:

  • #include <stdlib.h>出现在条件代码中(由于预处理器语句,例如 #if#elif#else ),实际上并未包含在内。
  • 收到警告的行早于包含 <stdlib.h> 的行.
  • 您没有编译您认为的源文件。
  • 您尚未将编辑器缓冲区的内容保存到磁盘,因此正在编译的文件版本是旧版本,而不是您在编辑器中查看的版本。
  • 之前<stdlib.h>包括在内,有一个#define取代 malloc与其他东西一起使用(很可能在 #undef 之后包含一个 <stdlib.h>。(这种情况很少见,但有可能。)

如果这些都没有揭示错误,您应该将问题简化为 short, self-contained compilable example .这样做的练习很可能会阐明问题。

关于内置 malloc 的 C 隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21633215/

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