Почему я получаю предупреждение каждый раз, когда я использовать 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’
4 104

4 ответа:

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

#include <stdlib.h>

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

  1. вы явно не объявите его и
  2. уже есть встроенная функция с этим именем, которая имеет другую подпись, чем та, которая была неявно объявлена (когда объявлена функция неявно предполагается, что его возвращаемый и аргументированный типы int, который не совместим со встроенным malloc, которую занимает size_t и возвращает a void*).

вы еще не сделали #include <stdlib.h>.

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

#include <stdlib.h>

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

заведите привычку искать свои функции в справке.

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

man malloc

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

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

конечно, в unix вы также получаете apropos для вещей, которые связаны.