Почему я получаю предупреждение каждый раз, когда я использую malloc?

Если я использую malloc в своем коде:

int *x = malloc(sizeof(int));

Я получаю это предупреждение от gcc:

new.c: 7: предупреждение: неявное объявление функции 'malloc
new.c: 7: warning: несовместимое неявное объявление встроенной функции 'malloc

4b9b3361

Вам нужно добавить:

#include <stdlib.h>

Этот файл содержит декларацию для встроенной функции malloc. Если вы этого не сделаете, компилятор думает, что вы хотите определить свою собственную функцию с именем malloc, и она предупреждает вас, потому что:

  • Вы явно не объявляете его и
  • У этого имени есть встроенная функция, у которой есть другая сигнатура, отличная от той, которая была объявлена ​​неявно (когда функция объявлена ​​неявно, ее тип возвращаемых и аргументов считается int, который isn ' t, совместимый со встроенным malloc, который принимает size_t и возвращает void*).
197
ответ дан 05 авг. '09 в 2:19
источник

Вы не выполнили #include <stdlib.h>.

28
ответ дан 05 авг. '09 в 2:18
источник

Вам нужно включить заголовочный файл, объявляющий функцию, например:

#include <stdlib.h>

Если вы не включаете этот заголовочный файл, функция не известна компилятору. Таким образом, он видит его незаявленным.

15
ответ дан 05 авг. '09 в 2:18
источник

Сделайте привычку искать ваши функции в помощи.

большая часть помощи для C смоделирована на страницах руководства unix.

man malloc

дает довольно полезные результаты.

googling man malloc покажет вам, что я имею в виду.

конечно же, в unix вы также получаете ответы на все, что связано.

10
ответ дан 05 авг. '09 в 2:23
источник