我是C的新手。
我收到此错误:
内置函数'malloc'的不兼容隐式声明
即使根据包含<stdlib.h>
的答案修复代码,我仍然会得到:
声明说明符中的两个或多个数据类型
尝试这样做时:
struct tnode
{
int data;
struct tnode * left;
struct tnode * right;
}
struct tnode * talloc(int data){
struct tnode * newTnode;
newTnode = (struct tnode *) malloc (sizeof(struct tnode));
newTnode->data = data;
newTnode->left = NULL;
newTnode->right = NULL;
return newTnode;
}
我该如何解决?
答案 0 :(得分:93)
您必须将;
置于struct
声明后面:
struct tnode
{
int data;
struct tnode * left;
struct tnode * right;
}; // <-- here
答案 1 :(得分:7)
您的原始错误是因为您试图在不包含malloc
的情况下使用stdlib.h
。
您的新错误(实际上应该是一个单独的问题,因为您现在已经使所有其他日期答案无效)是因为您在struct
定义的末尾缺少分号字符。< / p>
此代码编译良好(尽管没有main
):
#include <stdlib.h>
struct tnode
{
int data;
struct tnode * left;
struct tnode * right;
};
struct tnode * talloc(int data){
struct tnode * newTnode;
newTnode = (struct tnode *) malloc (sizeof(struct tnode));
newTnode -> data = data;
newTnode -> left = NULL;
newTnode -> right = NULL;
return newTnode;
}
答案 2 :(得分:4)
“隐式声明”表示您正在尝试使用尚未正式声明的函数。
您可能忘了:#include <stdlib.h>
其中包含malloc
的函数声明。
答案 3 :(得分:2)
您是否包含相应的头文件?
也就是说,文件顶部是否有一行显示
#include <stdlib.h>
希望这有帮助。
答案 4 :(得分:1)
确保您已包含包含malloc()定义的头文件:
#include "stdlib.h"