Вы должны поставить ;
; ; за структурой
Декларация:
struct tnode
{
int data;
struct tnode * left;
struct tnode * right;
}; // <-- here
«Неявная декларация» означает, что вы пытаетесь использовать функцию это не было официально объявлено.
Вы, вероятно, забыли: #inClude
, который включает в себя объявление функции для malloc
.
Ваша оригинальная ошибка была, потому что вы пытались использовать Malloc
без включения STDLIB.h
.
Ваша новая ошибка (которая действительно должна была быть отдельным вопросом, поскольку вы теперь недействилизируются все остальные ответы на сегодняшний день), заключается в том, что вы отсутствуете символ с запятой в конце структуры
определения Отказ
Этот код компилируется нормально (хотя и без 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;
}
У вас есть соответствующий файл заголовка?
то есть, есть ли строка в верхней части вашего файла, который говорит
#include <stdlib.h>
Надеюсь, это поможет.
Убедитесь, что вы включили файл заголовка, который содержит определение для Malloc ():
#include "stdlib.h"