Dos o más tipos de datos en el error de los especificadores de statement

Soy bastante nuevo en C.

Estoy recibiendo este error:

Declaración implícita incompatible de la función incorporada ‘malloc’

Incluso cuando arreglo el código basado en las respuestas para incluir , todavía obtengo:

Dos o más tipos de datos en especificadores de statement.

Al tratar de hacer esto:

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

¿Cómo lo arreglo?

Usted tiene que poner detrás de la statement de la struct :

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

Su error original fue porque intentaba usar malloc sin incluir stdlib.h .

Su nuevo error (que realmente debería haber sido una pregunta por separado ya que ahora ha invalidado todas las demás respuestas hasta la fecha) es porque le falta un carácter de punto y coma al final de la definición de la struct .

Este código comstack bien (aunque sin un main ):

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

“Declaración implícita” significa que está intentando usar una función que no ha sido declarada formalmente.

Probablemente haya olvidado: #include que incluye la statement de función para malloc .

¿Tiene el archivo de encabezado apropiado incluido?

Es decir, ¿hay una línea en la parte superior de su archivo que diga

 #include  

Espero que esto ayude.

Asegúrese de haber incluido el archivo de encabezado que contiene la definición de malloc ():

 #include "stdlib.h"