Yerleşik 'malloc' işlevinin uyumsuz örtülü bildirimi


155

Bu hatayı alıyorum:

uyarı: yerleşik 'malloc' işlevinin uyumsuz örtülü bildirimi

Bunu yapmaya çalışıyorum:

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

Sadece referans için eldeki yapı:

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

Yaptığım şeyde yanlış bir şey görmüyorum. Sadece tempList1 x boyutunda bir tane oluşturuyorum fileinfo_list.


Yanıtlar:


340

Dahil etmeyi unutmuşsunuzdur <stdlib.h>.


1
ahh teşekkürler :) hala C asmak, java gelen ilk C programı :)
SGE

dahil sonra <stdlib.h>uyarıyı bir hata ile değiştirildierror: conflicting types for 'malloc'
Christos Karapapas

46

Gerek #include <stdlib.h>. Aksi takdirde int malloc(), yerleşik tiple uyumsuz olarak tanımlanır void *malloc(size_t).


olarak tanımlandığında int malloc()çoğalıyor void *malloc(size_t)mu?
user1343318 12:14

@ user1343318 Mutlaka uyarı nedeni bu değildir. Örnek: 64-bit veri işaretleyicileri ve 32-bit intdeğerleri olan bir x64 platformu keçi dışkılarını kusar int, x86 32bit-veri işaretçisi / 32bit- düzgün çalışıyor olabilir. Her iki durumda da derleyici mallocgerçekte neyin geri döndüğünün farkındadır ve intyanıt olarak varsayar .
WhozCraig


4

Stdlib.h dosyası, malloc, calloc, realloc ve free işlevlerinin başlık bilgilerini veya prototipini içerir.

Bu nedenle, ANSI C'de bu uyarıyı önlemek için stdlib başlık dosyasını eklemeniz gerekir.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.