编辑:第一段中的警告是由于我从编译器读取了旧日志(在包含 unistd.h 之前,很抱歉造成混淆,第二个问题仍然存在)
我有一段代码使用了 c 函数 unlink(在 unistd.h 中声明)。使用 gcc -Wall 编译后,我收到警告:解决这个问题。我目前的解决方案是简单地将行 extern int unlink(const char *path);
添加到代码中,但这看起来有点傻,因为我还包括了 unistd.h
我曾经收到过有关使用函数 swab(也在 unistd.h 中声明)的警告,但在检查 unistd.h 后设法通过添加行来解决此问题
#ifndef __USE_XOPEN
#define __USE_XOPEN
#endif
不确定这样做是否正确,如有任何见解,我们也将不胜感激。
最佳答案
您很可能有打字错误或一些简单的错误.....试试这个。
#include <unistd.h>
int
main()
{
int r;
r = unlink("foo");
return(r);
}
编译它
gcc -Wall foo.c
以上应该是干净的编译。您可以预处理并执行 grep 以验证取消链接声明已被拉入。
sys> gcc -E foo.c | grep unlink
int unlink(const char *);
r = unlink("foo");
关于c - 函数 swab 的隐式声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006750/