我想摆脱警告。当我用
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’
当我不使用 -ansi 开关进行编译时
gcc -Wall -o test test.c
我在终端上看到
test.c: In function ‘main’: test.c:12: warning: implicit declaration of function ‘getresuid’
我想使用 -ansi 开关并摆脱警告。我如何实现我的目标?
/* 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扩展功能,添加
getresuid()
seteuid()
#define _GNU_SOURCE
*包括所有标题 *之前 ,或添加-D_GNU_SOURCEGCC选项。
-D_GNU_SOURCE
您不应该__USE_GNU直接定义宏,它应该仅在glibc内部使用。
__USE_GNU