声明说明符中的两个或多个数据类型错误

时间:2010-01-20 04:09:22

标签: c

我是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;
}

我该如何解决?

5 个答案:

答案 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"