Почему я получаю предупреждение каждый раз, когда использую malloc?
Вопрос
Если я использую malloc
в моем коде:
int *x = malloc(sizeof(int));
Я получил это предупреждение от gcc
:
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
Решение
Вам нужно добавить:
#include <stdlib.h>
Этот файл включает объявление встроенной функции malloc
.Если вы этого не сделаете, компилятор подумает, что вы хотите определить собственную функцию с именем malloc
и он предупреждает вас, потому что:
- Вы не заявляете об этом явно и
- Уже существует встроенная функция с таким именем, которая имеет подпись, отличную от той, которая была объявлена неявно (когда функция объявляется неявно, предполагается, что ее типы возвращаемого значения и аргумента равны
int
, который несовместим со встроеннымmalloc
, что занимаетsize_t
и возвращаетvoid*
).
Другие советы
Вы еще не сделали #include <stdlib.h>
.
Вам необходимо включить заголовочный файл, который объявляет функцию, например:
#include <stdlib.h>
Если вы не включите этот заголовочный файл, функция не известна компилятору. Так что он видит это как необъявленное.
привыкните к поиску ваших функций в справке.
Большая часть справки для C смоделирована на страницах справочника Unix.
man malloc
дает довольно полезные результаты.
Гугл человек Маллок покажет вам, что я имею в виду.
Конечно, в Unix вы также получите подходящие вещи.