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

33
задан Jonathan Leffler 30 August 2016 в 19:59
поделиться

5 ответов

Вы должны поставить ; ; ; за структурой Декларация:

struct tnode
{
    int data;

    struct tnode * left;
    struct tnode * right;
}; // <-- here
93
ответ дан 27 November 2019 в 17:32
поделиться

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

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

4
ответ дан 27 November 2019 в 17:32
поделиться

Ваша оригинальная ошибка была, потому что вы пытались использовать 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;
}
6
ответ дан 27 November 2019 в 17:32
поделиться

У вас есть соответствующий файл заголовка?

то есть, есть ли строка в верхней части вашего файла, который говорит

#include <stdlib.h>

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

2
ответ дан 27 November 2019 в 17:32
поделиться

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

#include "stdlib.h"
1
ответ дан 27 November 2019 в 17:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: