Ответ 1
Вы должны включить <stdlib.h>
.
В xcode 5 я получаю это предупреждение:
"неявное объявление свободной функции недействительно в c99"
Как мне освободить свои c-структуры, если я не могу использовать функцию free()?
Вы должны включить <stdlib.h>
.
Вы получаете это предупреждение, потому что вы вызываете функцию без предварительного объявления, поэтому компилятор не знает о функции.
Все функции должны быть объявлены перед вызовом, в 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>
к исходному коду.