我的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’
您能否告诉我如何解决这些警告?
谢谢。
答案 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:
答案 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文件)的顶部。