Почему я получаю предупреждение каждый раз, когда я использую malloc?
Если я использую malloc
в своем коде:
int *x = malloc(sizeof(int));
Я получаю это предупреждение от gcc
:
new.c: 7: предупреждение: неявное объявление функции 'malloc
new.c: 7: warning: несовместимое неявное объявление встроенной функции 'malloc
Ответы
Ответ 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 вы также получаете ответы на все, что связано.