27

在 xcode 5 中,我收到此警告:

“函数 free 的隐式声明在 c99 中无效”

如果我不能使用函数 free(),我应该如何释放我的 c 结构?

4

2 回答 2

67

你应该包括<stdlib.h>.

于 2013-10-16T11:02:02.510 回答
8

您收到该警告是因为您在没有先声明它的情况下调用了一个函数,因此编译器不知道该函数。

所有函数都需要在调用之前声明,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>

到您的源代码。

于 2013-10-16T11:16:20.473 回答