2009-08-04 11 views

Respuesta

203

es necesario agregar:

#include <stdlib.h> 

Este archivo incluye la declaración de la función incorporada de malloc. Si no lo hace, el compilador piensa que desea definir su propia función nombrada malloc y le advierte porque:

  1. no declara explícitamente que y
  2. ya hay un construyeron -en función de ese nombre que tiene una firma diferente a la que se declaró implícitamente (cuando una función se declara implícitamente, se supone que sus tipos de retorno y argumento son int, que no es compatible con el malloc incorporado, que toma un size_t y devuelve un void*).
+23

+1 para una descripción real del mensaje –

+5

Terminología nit: No existe una función incorporada en C. malloc es simplemente una función de la biblioteca estándar C. – Jens

+4

@Jens No veo un problema para referirme a las funciones estándar de la biblioteca como integradas, y tampoco lo hacen las personas gcc aparentemente ya que el mensaje de error también usó la palabra "built-in" (que es por lo que lo hice). – sepp2k

28

No ha hecho #include <stdlib.h>.

15

es necesario incluir el archivo de cabecera que declara la función, por ejemplo:

#include <stdlib.h> 

Si no se incluye este archivo de cabecera, la función no es conocida por el compilador. Entonces lo ve como no declarado.

10

tienen la costumbre de buscar sus funciones en ayuda.

más ayuda para C se basa en las páginas del manual de Unix.

hombre malloc

da resultados muy útiles.

google hombre malloc le mostrará lo que quiero decir.

Por supuesto, en Unix también obtienes un aviso para cosas relacionadas.

+1

Solo si ya sabe que la línea '#include ' en la sinopsis significa que tiene que escribir eso en su programa. –

+1

Si alguien ha leído las otras respuestas aquí, ahora sabrá eso. – MikeKulls

Cuestiones relacionadas