【问题标题】:"Implicit declaration of process_vm_readv", But I am including <sys/uio.h>“process_vm_readv 的隐式声明”,但我包括 <sys/uio.h>
【发布时间】:2014-06-22 01:41:15
【问题描述】:

我正在尝试使用 GCC 编译一些代码。在我的代码中,我调用了 process_vm_readv() 和 process_vm_writev() (这些是非标准的 Linux 扩展,请参见此处的手册页:http://linux.die.net/man/2/process_vm_writev)。

遵从man,我在我的.c文件中包含,但GCC吐出来:

警告:函数‘process_vm_writev’的隐式声明

我不知道如何解决这个问题...标准 libc 函数,如 printf 和 strlen 编译良好。

【问题讨论】:

  • 您的libc 似乎没有。你有哪个 libc 版本?原型是否存在于/usr/include/bits/uio.h 中?
  • @downvoter 这是一个有效的问题,格式正确且在网站范围内。有什么理由拒绝投票?
  • 我应该提到我的 glibc 版本是 2.17(从版本 >= 2.15 开始支持功能。)虽然没有解决它。
  • 是的。这是一个很好的答案。我很惊讶手册页没有提到它,它通常直接在标题之前提到。

标签: c gcc ubuntu-13.10


【解决方案1】:

这些功能仅在启用 GNU 扩展时可用。那就是 #define _GNU_SOURCE 生效了(这一事实可能应该记录在他的手册页中)

所以你需要这样做

#define _GNU_SOURCE
#include <sys/uio.h>

【讨论】:

  • 是的,做到了!我报告的是手册页项目中的一个错误。
猜你喜欢
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多