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

时间:2010-01-27 04:40:02

标签: c++ c

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

#include <stdio.h>
#include <glib.h>
#include <stdlib.h>

但我仍然收到这些警告:

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’

您能否告诉我如何解决这些警告?

谢谢。

5 个答案:

答案 0 :(得分:71)

你需要:

#include <string.h> /* memset */
#include <unistd.h> /* close */

代码。

参考文献:close的POSIX,memset的C标准。

答案 1 :(得分:29)

找出丢失的头文件的好方法:

 man <section> <function call>

要找出使用部分:

apropos <function call>

示例:

 man 3 memset
 man 2 send

编辑回应James Morris:

  • 部分|描述
  • 1个常规命令
  • 2系统调用
  • 3 C库函数
  • 4特殊文件(通常是设备, 在/ dev)和驱动程序中找到的那些
  • 5文件格式和惯例
  • 6游戏和屏保
  • 7 Miscellanea
  • 8系统管理命令和 守护程序

来源:Wikipedia Man Page

答案 2 :(得分:15)

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

#include <string.h>
...

答案 3 :(得分:5)

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

#define _GNU_SOURCE

它帮助我使用pipe2功能。

答案 4 :(得分:0)

旧问题,但我有类似的问题,我通过添加

解决了它
extern void* memset(void*, int, size_t);

或只是

extern void* memset();

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