Saya mendapatkan kesalahan ini:
peringatan: deklarasi implisit yang tidak kompatibel dari fungsi built-in 'malloc'
Saya mencoba melakukan ini:
fileinfo_list* tempList = malloc(sizeof(fileinfo_list));
Hanya untuk referensi, struct yang digunakan adalah:
typedef struct {
fileinfo** filedata;
size_t nFiles;
size_t size;
size_t fileblock;
} fileinfo_list;
Saya tidak melihat ada yang salah dengan apa yang saya lakukan. Saya hanya membuat tempList
dengan ukuran 1 x fileinfo_list
.
Jawaban:
Anda mungkin lupa memasukkan
<stdlib.h>
.sumber
<stdlib.h>
peringatan itu diganti oleh kesalahanerror: conflicting types for 'malloc'
Anda harus melakukannya
#include <stdlib.h>
. Kalau tidak, itu didefinisikan sebagaiint malloc()
yang tidak kompatibel dengan tipe bawaanvoid *malloc(size_t)
.sumber
int malloc()
, apakah itu mereplikasivoid *malloc(size_t)
?int
akan memuntahkan kotoran kambing, sementara x86 32bit-data-pointer / 32bit-int
tampaknya dapat bekerja dengan benar. Tidak ada yang benar, karena dalam kedua kasus tidak kompiler menyadari apa yangmalloc
sebenarnya kembali, dan menganggapint
sebagai respons.Kamu hilang
#include <stdlib.h>
.sumber
File stdlib.h berisi informasi header atau prototipe dari fungsi malloc, calloc, realloc dan gratis.
Jadi untuk menghindari peringatan ini di ANSI C, Anda harus memasukkan file header stdlib.
sumber
Satu-satunya solusi untuk peringatan tersebut adalah dengan memasukkan stdlib.h dalam program.
sumber