Ответ 1
Вам нужно:
#include <string.h> /* memset */
#include <unistd.h> /* close */
в вашем коде.
Ссылки: POSIX для close
, стандарт C для memset
.
Мой код 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’
Не могли бы вы рассказать мне, как я могу разрешить эти предупреждения?
Спасибо.
Вам нужно:
#include <string.h> /* memset */
#include <unistd.h> /* close */
в вашем коде.
Ссылки: POSIX для close
, стандарт C для memset
.
Хороший способ узнать, какой файл заголовка отсутствует:
man <section> <function call>
Чтобы узнать, как использовать этот раздел:
apropos <function call>
Пример:
man 3 memset
man 2 send
Редактировать в ответ на Джеймса Морриса:
Источник: Личная страница Википедии
memset
требуется импортировать файл заголовка string.h
. Поэтому просто добавьте следующий заголовок
#include <string.h>
...
Попробуйте добавить следующее определение в начале вашего .c файла:
#define _GNU_SOURCE
Это помогло мне с функцией pipe2.
Старый вопрос, но у меня была аналогичная проблема, и я решил ее, добавив
extern void* memset(void*, int, size_t);
или просто
extern void* memset();
в верхней части единицы перевода (*.c файл).