2009-08-04 11 views

Odpowiedz

203

Trzeba dodać:

#include <stdlib.h> 

Ten plik zawiera deklarację dla wbudowanej funkcji malloc. Jeśli tego nie robią, kompilator myśli chcesz zdefiniować własną funkcję o nazwie malloc i ostrzega użytkownika, ponieważ:

  1. Nie jawnie zadeklarować i
  2. Istnieje już jest wbudowany -in funkcji o tej nazwie, która ma inną sygnaturę niż ta, która została domyślnie zadeklarowana (gdy funkcja jest deklarowana niejawnie, przyjmuje się, że jej typ powrotu i argumentów to int, który nie jest zgodny z wbudowanym malloc, który pobiera size_t i zwraca void*).
+23

+1 do rzeczywistego opisu wiadomość –

+5

Terminologia nit: nie ma czegoś takiego jak wbudowanej funkcji w C. malloc jest po prostu funkcja z biblioteki standardowej C. – Jens

+4

@Jens Nie widzę problemu z odwołaniem się do standardowych funkcji bibliotecznych jako wbudowanych - i nie widać też ludzi z GCC, ponieważ komunikat o błędzie użył również słowa "wbudowane" (dlatego tak zrobiłem). – sepp2k

28

Nie wykonałeś #include <stdlib.h>.

15

musisz dołączyć plik nagłówka, który deklaruje funkcję, na przykład:

#include <stdlib.h> 

Jeśli nie obejmują tego pliku nagłówka, funkcja nie jest znana do kompilatora. Więc uważa to za niezadeklarowane.

10

wyrobisz sobie nawyk patrzenia swoje funkcje w pomoc.

najbardziej pomocne dla C wzorowana jest na stronach podręcznika UNIX.

człowiek malloc

daje całkiem użyteczne wyniki.

Google malloc pokaże ci, co mam na myśli.

oczywiście w Uniksie można również uzyskać apropos do rzeczy, które są związane.

+1

Tylko jeśli wiesz już, że wiersz '#include ' w podsumowaniu oznacza, że ​​musisz napisać to w swoim programie. –

+1

Jeśli ktoś przeczytał inne odpowiedzi tutaj, to teraz to wie. – MikeKulls