警告:函数“ getresuid”(和“ seteuid”)的隐式声明

我想摆脱警告。当我用

gcc -Wall -ansi -o test test.c

我回来

test.c: In function ‘main’:

test.c:12: warning: implicit declaration of function ‘getresuid’

test.c:14: warning: implicit declaration of function ‘seteuid’

当我不使用 开关进行编译时

gcc -Wall -o test test.c

我在终端上看到

test.c: In function ‘main’:

test.c:12: warning: implicit declaration of function ‘getresuid’

我想使用 开关并摆脱警告。我如何实现我的目标?

/*  this is the test.c */

#include <stdio.h>

#include <sys/types.h>

#include <unistd.h>

#define __USE_GNU 1

#define __USE_BSD 1

int main()

{

static uid_t euid, ruid, suid;

getresuid(&ruid, &euid, &suid);

seteuid(getuid());

return 0;

}

环境:

CentOS 6.3 32位

gcc版本4.4.7 20120313(Red Hat 4.4.7-3)(GCC)

回答:

getresuid()并且seteuid()是GNU扩展功能,添加

#define _GNU_SOURCE

,或添加-D_GNU_SOURCEGCC选项。

您不应该__USE_GNU直接定义宏,它应该仅在glibc内部使用。

以上是 警告:函数“ getresuid”(和“ seteuid”)的隐式声明 的全部内容, 来源链接: utcz.com/qa/417093.html

回到顶部