我有一个像这样的代码段
typedef struct node* node_t;
struct node{
int value;
node_t link;
};
......
......
......
//now I want to allocate memory somewhere else in the program.
node_t x;
x=(node_t) malloc(sizeof *x);
请您告诉我上述陈述是否合适? Eclipse显示此警告
warning: implicit declaration of function ‘malloc’ [-Wimplicit-function-declaration]
../tree.c:22:9:
warning: incompatible implicit declaration of built-in function ‘malloc’
有人可以详细解释这样的情况吗?这实际上有什么问题。如果你能列出我可以在这个程序中分配内存的所有可能方法,我真的很感激?提前谢谢..
答案 0 :(得分:1)
要使用malloc
,您需要加入<stdlib.h>
。另外,分配内存,如
node_t x = malloc(sizeof node_t);
您不能将内存分配给堆栈变量,而只能分配给指针。并且永远不会强制转换为已分配的类型,因为malloc
返回void*
,并且不需要明确地进行转换。
答案 1 :(得分:0)
你需要一个
#include <stdlib.h>
使用malloc
之前。您显然在源中声明了该函数错误。永远不要声明C标准库函数。只需包含声明它们的标题。
答案 2 :(得分:0)
请您告诉我上述陈述是否合适?
不,它不是:您正在转换malloc()
的返回值而您错过了<stdlib.h>
标题。
答案 3 :(得分:0)
您收到警告,因为您在范围内没有malloc
声明;您需要包含stdlib.h
头文件:
#include <stdlib.h>
你也应该放弃演员阵容。没有必要,并且在其他编译器下将禁止诊断您尝试将int
值分配给指针类型。
请不要隐藏typedef背后的指针。这几乎总是一个坏主意。