내장 함수 'malloc'의 호환되지 않는 암시 적 선언


155

이 오류가 발생합니다.

경고 : 내장 함수 'malloc'의 호환되지 않는 암시 적 선언

나는 이것을하려고합니다 :

fileinfo_list* tempList = malloc(sizeof(fileinfo_list));

참고로 손에 사용되는 구조체는 다음과 같습니다.

typedef struct {
    fileinfo** filedata;
    size_t nFiles;
    size_t size;
    size_t fileblock;
} fileinfo_list;

내가 한 일에 아무런 문제가 없습니다. 방금 tempList1 x 크기의를 만들고 fileinfo_list있습니다.


답변:


340

포함하는 것을 잊었을 수 있습니다 <stdlib.h>.


1
아아 고마워 :) 여전히 C의 중단, 자바에서 오는 첫 번째 C 프로그램 :)
SGE

<stdlib.h>경고를 포함 시킨 후 오류로 대체되었습니다error: conflicting types for 'malloc'
Christos Karapapas

46

당신은해야합니다 #include <stdlib.h>. 그렇지 않으면 int malloc()내장 유형과 호환되지 않는 것으로 정의됩니다 void *malloc(size_t).


로 정의되면 int malloc()복제 void *malloc(size_t)됩니까?
user1343318

반드시 경고가 필요한 이유는 아닙니다. 예 : 64 비트 데이터 포인터와 32 비트 int값을 가진 x64 플랫폼 은 염소 배설물을 찌르는 반면, x86 32 비트 데이터 포인터 / 32 비트 int는 올바르게 작동하는 것처럼 보입니다. 경우 모두 컴파일러가 malloc실제로 반환 되는 내용을 인식 int하고 응답으로 가정 하므로 어느 것도 정확하지 않습니다 .
WhozCraig


4

stdlib.h 파일에는 malloc, calloc, realloc 및 free 함수의 헤더 정보 또는 프로토 타입이 포함되어 있습니다.

따라서 ANSI C에서이 경고를 피하려면 stdlib 헤더 파일을 포함해야합니다.


-4

이러한 경고에 대한 유일한 해결책은 프로그램에 stdlib.h를 포함시키는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.