Подтвердить что ты не робот

Два или более типа данных в ошибке спецификаторов объявлений

Я новичок в 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;
}

Как это исправить?

4b9b3361

Ответ 1

Вы должны положить ; за объявление struct:

struct tnode
{
    int data;

    struct tnode * left;
    struct tnode * right;
}; // <-- here

Ответ 2

Исходная ошибка была связана с тем, что вы пытались использовать 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;
}

Ответ 3

"Неявное объявление" означает, что вы пытаетесь использовать функцию, которая не была официально объявлена.

Вероятно, вы забыли: #include <stdlib.h>, который включает объявление функции для malloc.

Ответ 4

Есть ли у вас соответствующий заголовочный файл?

То есть, есть ли строка вверху вашего файла, в которой говорится

#include <stdlib.h>

Надеюсь, что это поможет.

Ответ 5

Убедитесь, что вы включили заголовочный файл, содержащий определение для malloc():

#include "stdlib.h"