malloc
내 코드에서 사용하는 경우 :
int *x = malloc(sizeof(int));
다음에서이 경고를받습니다 gcc
.
new.c:7: warning: implicit declaration of function ‘malloc’
new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
답변
다음을 추가해야합니다.
#include <stdlib.h>
이 파일에는 내장 함수에 대한 선언이 포함되어 있습니다 malloc
. 그렇게하지 않으면 컴파일러 malloc
는 이름이 지정된 함수를 정의하고 싶다고 생각하고 다음 과 같은 이유로 경고합니다.
- 당신은 명시 적으로 선언하지 않는 및
- 암시 적으로 선언 된 것과 다른 서명을 가진 해당 이름의 내장 함수가 이미 있습니다 (함수가 암시 적으로 선언 될 때 반환 및 인수 유형은 내장 함수와
int
호환되지 않는으로 간주됩니다 .) inmalloc
, a를 취하고 a)size_t
를 반환합니다void*
.
답변
당신은하지 않았습니다 #include <stdlib.h>
.
답변
함수를 선언하는 헤더 파일을 포함해야합니다. 예를 들면 다음과 같습니다.
#include <stdlib.h>
이 헤더 파일을 포함하지 않으면 함수가 컴파일러에 알려지지 않습니다. 그래서 그것은 선언되지 않은 것으로 간주합니다.
답변
도움을 받아 기능을 찾는 습관을들이십시오.
C에 대한 대부분의 도움말은 유닉스 매뉴얼 페이지에서 모델링됩니다.
사용 :
man malloc
매우 유용한 결과를 제공합니다.
인터넷 검색 man malloc
은 내가 의미하는 바를 보여줄 것입니다.
유닉스에서는 관련된 것들에 대한 제안도 얻습니다.
답변
다른 매우 좋은 답변 외에도 약간의 간단한 작업을 수행하고 다른 답변에서 아직 논의되지 않은 것을 다루고 싶습니다.
Linux에있을 때 malloc()
코드에서 사용하려면
당신은 실제로 할 필요가 없습니다 #include <stdlib.h>
.
(의 사용 stdlib.h
은 매우 일반적이며 아마도 장난감이 아닌 모든 프로그램은 유용한 C 표준 라이브러리 함수와 매크로를 광범위하게 제공하기 때문에 어느 쪽이든 포함해야합니다)
#include <malloc.h>
대신 할 수도 있습니다 .
그러나의 사용 malloc.h
은 더 이상 사용되지 않으며 코드를 이식 할 수 없게 만듭니다. 당신이 사용하고 싶다면 malloc()
당신은 항상 (명시적인 이유를 제외하고) 항상해야합니다 #include <stdlib.h>
.
이유 왜 가장이 질문에 대한 답변에 설명되어 있습니다 :