J'obtiens cette erreur:
avertissement: déclaration implicite incompatible de la fonction intégrée 'malloc'
J'essaye de faire ceci:
fileinfo_list* tempList = malloc(sizeof(fileinfo_list));
Juste pour la référence, la structure utilisée est:
typedef struct {
fileinfo** filedata;
size_t nFiles;
size_t size;
size_t fileblock;
} fileinfo_list;
Je ne vois rien de mal à ce que j'ai fait. Je crée juste un tempList
avec la taille de 1 x fileinfo_list
.
Réponses:
Vous avez probablement oublié d'inclure
<stdlib.h>
.la source
<stdlib.h>
l'avertissement a été remplacé par une erreurerror: conflicting types for 'malloc'
Vous devez
#include <stdlib.h>
. Sinon, il est défini commeint malloc()
incompatible avec le type intégrévoid *malloc(size_t)
.la source
int malloc()
, est-ce qu'il se répliquevoid *malloc(size_t)
?int
valeurs 32 bits vomira des excréments de chèvre, tandis qu'un pointeur de données x86 32 bits / 32 bitsint
peut apparemment fonctionner correctement. Ni l'un ni l'autre ne sont corrects, car dans aucun des cas, le compilateur n'est conscient de cemalloc
qui retourne réellement et supposeint
en réponse.Vous avez disparu
#include <stdlib.h>
.la source
Le fichier stdlib.h contient les informations d'en-tête ou le prototype des fonctions malloc, calloc, realloc et free.
Donc, pour éviter cet avertissement dans ANSI C, vous devez inclure le fichier d'en-tête stdlib.
la source
La seule solution pour de tels avertissements est d'inclure stdlib.h dans le programme.
la source