如何解决编译器警告’隐式声明函数memset’

我的c代码使用’memset’和’close’。 我补充说:

#include  #include  #include  

但我仍然得到这些警告:

 main.c:259: warning: implicit declaration of function 'memset' main.c:259: warning: incompatible implicit declaration of built-in function 'memset' main.c:268: warning: implicit declaration of function 'close' main.c:259: warning: incompatible implicit declaration of built-in function 'close' 

你能告诉我怎样才能解决这些警告?

谢谢。

你需要:

 #include  /* memset */ #include  /* close */ 

在你的代码中。

参考文献:POSIX for closememset的C标准。

找出缺少的头文件的好方法:

  man 

要查找该部分使用:

 apropos  

例:

  man 3 memset man 2 send 

编辑以回应詹姆斯莫里斯:

  • 部分| 描述
  • 1常规命令
  • 2系统调用
  • 3 C库函数
  • 4特殊文件(通常是设备,在/ dev中找到的)和驱动程序
  • 5文件格式和约定
  • 6游戏和屏保
  • 7杂记
  • 8系统管理命令和后台驻留程序

来源: 维基百科人页

memset要求您导入头string.h文件。 所以只需添加以下标题即可

 #include  ... 

尝试在.c文件的开头添加下一个define:

 #define _GNU_SOURCE 

它帮助我使用pipe2function。

老问题,但我有类似的问题,我通过添加解决了它

 extern void* memset(void*, int, size_t); 

要不就

 extern void* memset(); 

在翻译单元的顶部(* .c文件)。