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

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

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

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

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

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

4b9b3361

Ответ 1

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

#include <stdlib.h>

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

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

Ответ 2

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

Ответ 3

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

#include <stdlib.h>

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

Ответ 4

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

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

man malloc

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

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

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