Twee of meer gegevenstypen in declaratiespecificaties fout

Ik ben vrij nieuw bij C.

Ik krijg deze foutmelding:

incompatibele impliciete verklaring van ingebouwde functie ‘malloc’

Zelfs als ik de code corrigeer op basis van de antwoorden om <stdlib.h>op te nemen, krijg ik nog steeds:

twee of meer gegevenstypen in declaratiespecificaties

Als je dit probeert:

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

Hoe los ik het op?


Antwoord 1, autoriteit 100%

Je moet ;achter de structdeclaratie plaatsen:

struct tnode
{
    int data;
    struct tnode * left;
    struct tnode * right;
}; // <-- here

Antwoord 2, autoriteit 6%

Je oorspronkelijke fout was omdat je probeerde mallocte gebruiken zonder stdlib.hop te nemen.

Je nieuwe fout (die eigenlijk een aparte vraag had moeten zijn aangezien je nu alle andere antwoorden ongeldig hebt gemaakt) is dat je een puntkomma aan het einde van de structmist definitie.

Deze code compileert prima (zij het zonder een 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;
}

Antwoord 3, autoriteit 4%

‘Impliciete aangifte’ betekent dat u een functie probeert te gebruiken die niet formeel is gedeclareerd.

Je bent waarschijnlijk vergeten: #include <stdlib.h>die de functiedeclaratie voor mallocbevat.


Antwoord 4, autoriteit 2%

Heb je het juiste header-bestand bij de hand?

Dat wil zeggen, is er een regel bovenaan uw bestand met de tekst

#include <stdlib.h>

Hopelijk helpt dit.


Antwoord 5

Zorg ervoor dat u het header-bestand hebt opgenomen dat de definitie voor malloc() bevat:

#include "stdlib.h"

Other episodes