好的,所以我有下面的结构
struct node {
int visited;
struct node **depend;
};
我正在尝试使用以下动态分配
fscanf(iStream, "%d %d", &nTasks, &nRules);
graph = (struct node *) malloc(nTasks * sizeof(struct node));
但是Eclipse显示了
\GraphSort.c:62:18:警告:函数的隐式声明"malloc"[-Wimplicit函数声明]图=(结构节点*)malloc(nTasks*sizeof(struct-node));^
和
\GraphSort.c:62:26:警告:的不兼容隐式声明内置函数"malloc"[默认启用]图=(结构节点*)malloc(nTasks*sizeof(struct-node));^
我不明白的是为什么。数组不是表示为指向第一个元素的指针吗?
此外,我还有这个声明,它没有显示任何警告
fscanf(iStream, "%d, %d", &taskId, &dependencies);
graph[taskId-1].visited = 0;
graph[taskId-1].depend = (struct node **) malloc(dependencies * sizeof(struct node *));
implicit declaration of function 'malloc'
表示您没有包含正确的头文件,该头文件告诉您的程序如何调用malloc
。尝试添加到程序的开头:
#include <stdlib.h>
您的另一部分代码不是"声明",它只是一系列语句。编译器只会警告您一次未能为它编译的每个文件声明malloc()
。
您似乎只是忘记了包含<stdlib.h>
。