implicit declaration of function ‘unlink’
现在我现在这只是一个警告,但它有点让我恼火,我想要解决这个问题的正确方法。我目前的解决方案是简单地将行extern int unlink(const char *path);
添加到代码中,但这似乎有点傻,因为我还包括unistd.h
我曾经收到过关于使用函数swab(也在unistd.h中声明)的警告,但在检查unistd.h之后,通过添加行来解决这个问题
#ifndef __USE_XOPEN
#define __USE_XOPEN
#endif
不确定这是否正确,所以对此的任何见解也将受到赞赏。
答案 0 :(得分:1)
参考你的第二个问题(“隐含声明函数sawb
”):
替换
#ifndef __USE_XOPEN
#define __USE_XOPEN
#endif
与
#define _XOPEN_SOURCE
...将其置于所有其他#include
语句之前 应该可以使#include <unistd.h>
swab()
的原型设置可用。
#define
开头的 __
保留供内部使用,不得由程序直接设置。
答案 1 :(得分:1)
你很可能有一个错字或一些简单的错误.....试试这个。
#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");