Неявное объявление функции бесплатно недействительно в c99

В xcode 5 я получаю это предупреждение:

"неявное объявление свободной функции недействительно в c99"

Как мне освободить свои c-структуры, если я не могу использовать функцию free()?

Ответы

Ответ 1

Вы должны включить <stdlib.h>.

Ответ 2

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

Все функции должны быть объявлены перед вызовом, в C нет встроенных функций.

Верно, что free() - это функция, определенная в стандарте, но она все еще не встроена, у вас должен быть прототип для нее.

Чтобы выяснить, какой заголовок имеет прототип, попробуйте найти "man free" и найдите страницу руководства Linux. Близко к вершине, он говорит:

#include <stdlib.h>

void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);

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

#include <stdlib.h>

к исходному коду.