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 struct
declaratie plaatsen:
struct tnode
{
int data;
struct tnode * left;
struct tnode * right;
}; // <-- here
Antwoord 2, autoriteit 6%
Je oorspronkelijke fout was omdat je probeerde malloc
te gebruiken zonder stdlib.h
op 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 struct
mist 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 malloc
bevat.
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"