C语言动态生成结构体时出现未知警告
代码:#include<stdio.h>typedefstructLNode{intdata;structLNode*next;}*Link;intmain(){Link...
代码:
#include<stdio.h>
typedef struct LNode
{
int data;
struct LNode *next;
} *Link;
int main()
{
Link head=NULL;
head = (Link) malloc(sizeof(struct LNode));//这里的警告
head->data=5;
printf("%d\n",head->data);
return 0;
}
警告:
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
D:\程序\typedef测试.c||In function 'main':|
D:\程序\typedef测试.c|13|warning: implicit declaration of function 'malloc' [-Wimplicit-function-declaration]|
D:\程序\typedef测试.c|13|warning: incompatible implicit declaration of built-in function 'malloc'|
||=== Build finished: 0 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===| 展开
#include<stdio.h>
typedef struct LNode
{
int data;
struct LNode *next;
} *Link;
int main()
{
Link head=NULL;
head = (Link) malloc(sizeof(struct LNode));//这里的警告
head->data=5;
printf("%d\n",head->data);
return 0;
}
警告:
||=== Build file: "no target" in "no project" (compiler: unknown) ===|
D:\程序\typedef测试.c||In function 'main':|
D:\程序\typedef测试.c|13|warning: implicit declaration of function 'malloc' [-Wimplicit-function-declaration]|
D:\程序\typedef测试.c|13|warning: incompatible implicit declaration of built-in function 'malloc'|
||=== Build finished: 0 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===| 展开
2个回答
展开全部
你没声明malloc, 应该添加引用
#include<stdlib.h>
#include<stdlib.h>
追问
能否再详尽的解释一下,为什么没声明还可以使用呢?警告具体是什么意思呢
追答
c的隐式声明函数规则: 如果一个函数在使用前没有进行函数声明, 则在编译阶段, 由编译器自动添加一个返回值为int的函数声明, 也就是说, 你的代码在编译阶段, 编译器会默认添加一个声明:
int malloc();
然后在链接阶段, 由于没有对int malloc()函数进行定义, 会报ERROR
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询