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

StackOverflow https://stackoverflow.com/questions/1230386

Вопрос

Если я использую 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 и он предупреждает вас, потому что:

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

Другие советы

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

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

#include <stdlib.h>

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

привыкните к поиску ваших функций в справке.

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

man malloc

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

Гугл человек Маллок покажет вам, что я имею в виду.

Конечно, в Unix вы также получите подходящие вещи.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top