CODE CAVE

C언어 gcc 에러 - warning: incompatible implicit declaration of built-in function 'exit' 본문

Server/Linux

C언어 gcc 에러 - warning: incompatible implicit declaration of built-in function 'exit'

코드케이브 2016. 6. 7. 03:01


# 에러내용

xxx.c: In function 'main':

xxx.c:181: warning: incompatible implicit declaration of built-in function 'exit'


위와 같은 에러가 난다면 


#include <stdlib.h> 


를 추가해주면 됩니다.


대강만 해석해봐도 exit 함수가 문제인 것을 알 수 있는데요.


이런 류의 에러를 맞딱드리면 가장 먼저 봐야할 부분은 해당 함수가 정의되어있는지 확인하는 것 일 겁니다.


exit 함수를 정의한게 없는데 예제 코드에서는 사용하고 있는 등의 상황이시면, 어떤 라이브러리 파일에 정의되어 있다는 말이 가장 확률이 높을 것 입니다.


exit 함수는 C언어의 표준라이브러리인 stdlib.h 에 속해 있는 함수입니다.



stdlib 헤더 파일은 위키백과에서는 이렇게 말하고 있습니다.


"stdlib.h는 C 언어의 표준 라이브러리로, 문자열 변환, 의사 난수 생성, 동적 메모리 관리 등의 함수들을 포함하고 있다."



Stdlib.h는 C언어의 표준 라이브러리인 만큼 보통 일반적으로 쓰는 함수들이 굉장히 많이 들어 있습니다.


일례로, 0부터 n 사이의 랜덤 수를 반환해주는 rand() 함수. 게임만들 때 많이들 쓰셨죠?


그리고 size 바이트 만큼의 동적메모리(힙) 할당해주는 malloc, 이를 해제하는 free()는 공과생이라면 자주 쓰셨을 겁니다.


그리고 이번 에러의 원인이었던 exit() 함수는 시스템 프로그래밍에서 프로세스 부분에서 나름 자주 쓰는 현재 프로세스를 종료하는 역할을 합니다.


그리고 또 절대값 구할때 주로 쓰는 abs() 등등등.. 포스팅 하며 더 찾아보니 이진검색(bsearch), 퀵정렬알고리즘(qsort) 함수도 있네요. 


표준라이브러리 답게 표준적인 함수들이 굉장히 많네요.


아무튼 다시 본론으로 돌아가서 제가 위 gcc 에러가 난 것은 코드내에 exit() 함수를 썼었거든요~


저 에러가 꼭 stdlib.h를 include한다고 해서 해결되는 것은 아닙니다!


incompatible implicit declaration of built-in function 'exit' <<<<< exit 함수를 못찾는다고 대놓고 알려주고 있습니다.


즉 맨 뒤에 '' 를 보시고 그 함수가 정의가 안되어있는지, 헤더파일 어디에 존재하는건지. 찾으셔서 


그 해당 헤더파일을 include 하시면 되겠습니다~~ 



stdlib.h에 더 많은 함수들을 보고 싶다면 여기를 클릭해보세요~



힘을 냅시다 여러분! 즐 코딩!





도움이 되셨다면 아래 하트를 뿅..