Deklarasi implisit yang tidak kompatibel dari fungsi built-in 'malloc'


155

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 tempListdengan ukuran 1 x fileinfo_list.


Jawaban:


340

Anda mungkin lupa memasukkan <stdlib.h>.


1
ahh terima kasih :) masih memahami C, program C pertama yang berasal dari java :)
SGE

setelah memasukkan <stdlib.h>peringatan itu diganti oleh kesalahanerror: conflicting types for 'malloc'
Christos Karapapas

46

Anda harus melakukannya #include <stdlib.h>. Kalau tidak, itu didefinisikan sebagai int malloc()yang tidak kompatibel dengan tipe bawaan void *malloc(size_t).


ketika didefinisikan sebagai int malloc(), apakah itu mereplikasi void *malloc(size_t)?
user1343318

@ user1343318 Belum tentu, yang merupakan alasan untuk peringatan itu. Contoh: platform x64 dengan pointer data 64-bit dan nilai 32-bit intakan memuntahkan kotoran kambing, sementara x86 32bit-data-pointer / 32bit- inttampaknya dapat bekerja dengan benar. Tidak ada yang benar, karena dalam kedua kasus tidak kompiler menyadari apa yang mallocsebenarnya kembali, dan menganggap intsebagai respons.
WhozCraig


4

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.


-4

Satu-satunya solusi untuk peringatan tersebut adalah dengan memasukkan stdlib.h dalam program.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.