source

컴파일러 경고 '임의적 함수 선언 memset'을 해결하는 방법

lovecheck 2023. 7. 31. 21:29
반응형

컴파일러 경고 '임의적 함수 선언 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 for, C 표준:memset.

누락된 헤더 파일을 찾는 좋은 방법:

 man <section> <function call>

섹션을 확인하려면 다음을 사용합니다.

apropos <function call>

예:

 man 3 memset
 man 2 send

James Morris에 대한 응답으로 편집:

  • 섹션 | 설명
  • 1 일반 명령
  • 2 시스템 호출
  • 3C 라이브러리 기능
  • 4 특수 파일(일반적으로 /dev에 있는 장치) 및 드라이버
  • 5 파일 형식 및 규약
  • 6 게임 및 화면 보호기
  • 7 미스셀라네아
  • 8 시스템 관리 명령 및 데몬

출처: 위키백과페이지

memset헤더를 가져오도록 요구합니다.string.h파일. 그러니까 다음 헤더를 추가하면 됩니다.

#include <string.h>
...

.c 파일의 시작 부분에 다음 정의를 추가합니다.

#define _GNU_SOURCE

pipe2 기능에 도움이 되었습니다.

오래된 질문이지만 저도 비슷한 문제가 있었고 추가해서 해결했습니다.

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

아니면 그냥

extern void* memset();

번역 단위의 맨 위에 있습니다(*.c 파일).

언급URL : https://stackoverflow.com/questions/2144617/how-to-resolve-compiler-warning-implicit-declaration-of-function-memset

반응형