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