Неявное объявление функции бесплатно недействительно в 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> к исходному коду.
Ответ 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> к исходному коду.