ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

警告:隐式声明函数’getresuid'(和’seteuid’)

2019-10-01 19:50:26  阅读:243  来源: 互联网

标签:c-3 gcc-warning linux gcc compiler-warnings


我想摆脱警告.当我编译源代码时

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-bit
gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)

解决方法:

getresuid()和seteuid()是GNU扩展函数,添加

#define _GNU_SOURCE

在包含所有标题之前,或在GCC选项中添加-D_GNU_SOURCE.

你不应该直接定义__USE_GNU宏,它应该只在glibc内部使用.

标签:c-3,gcc-warning,linux,gcc,compiler-warnings
来源: https://codeday.me/bug/20191001/1839871.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有