34 votes

deux types de données ou plus dans les spécificateurs de déclaration error

Je suis assez nouveau pour C.

Je reçois cette erreur:

déclaration implicite incompatible de la fonction intégrée 'malloc'

Même lorsque je corrige le code en fonction des réponses pour inclure stdlib, je reçois toujours:

deux types de données ou plus dans les spécificateurs de déclaration

En essayant de faire ceci:

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

Comment je le répare?

94voto

sth Points 91594

Vous devez mettre ; derrière la déclaration struct :

 struct tnode
{
    int data;

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

6voto

paxdiablo Points 341644

L'original de votre erreur est parce que vous essayez d'utiliser malloc sans stdlib.h.

Votre nouveau message d'erreur (qui ne devrait vraiment avoir été une question distincte, puisque vous avez maintenant annulé toutes les autres réponses à ce jour), c'est parce que vous êtes en manque un point-virgule à la fin de l' struct définition.

Ce code se compile très bien (quoique sans 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;
}

4voto

jamesdlin Points 13455

"La déclaration implicite" signifie que vous essayez d'utiliser une fonction qui n'a pas été officiellement déclarée.

Vous avez probablement oublié: #include <stdlib.h> qui comprend la déclaration de la fonction pour malloc.

2voto

mdec Points 2687

Pensez-vous avoir le fichier d'en-tête inclus?

Qui est, est-il une ligne en haut de votre fichier qui dit

#include <stdlib.h>

Espérons que cette aide.

1voto

Mitch Wheat Points 169614

Vous assurer que vous avez inclus l'en-tête de fichier qui contient la définition de la fonction malloc():

#include "stdlib.h"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X