Struct C void* pointeur
J'ai un struct défini comme:
typedef struct {
int type;
void* info;
} Data;
et puis j'ai plusieurs autres structures que je veux attribuer à l'void* à l'aide de la fonction suivante:
Data* insert_data(int t, void* s)
{
Data * d = (Data*)malloc(sizeof(Data));
d->type = t;
d->info = s;
return d;
}
struct {
...
} Struct#;
je viens d'appeler les
insert_data(1, variable_of_type_Struct#);
Quand je compile ce qu'il donne un avertissement
warning: assignment from incompatible pointer type
j'ai essayé d'exprimer la variable dans l'encart (void*), mais n'a pas de travail
insert_data(1, (void *) variable_of_type_Struct#);
Comment puis-je me débarrasser de cet avertissement?
Grâce
où exactement ?
Veuillez vérifier mon exemple de code.
Casting le résultat de
J'ai l'impression de ces dièse '#' personnages dans votre code. Ils sont en relation avec les macros, pas sûr que font-ils dans votre code.
Pourquoi était-ce struct {...} Struct#; dans ton code? Je suis juste curieux.
Veuillez vérifier mon exemple de code.
Casting le résultat de
malloc
est inutile. Data * d = malloc(sizeof(Data));
suffirait.J'ai l'impression de ces dièse '#' personnages dans votre code. Ils sont en relation avec les macros, pas sûr que font-ils dans votre code.
Pourquoi était-ce struct {...} Struct#; dans ton code? Je suis juste curieux.
OriginalL'auteur Nitrate | 2012-04-25
Vous devez vous connecter pour publier un commentaire.
Passer l'adresse de la structure, pas une copie de celui-ci (c'est à dire pas passé par valeur):
Fonctionne très bien: ideone.com/rHD5f
de quel type est la variable? btw, pas besoin de jeter ici. Provede types pertinents, nous ne sommes pas des magiciens pour voir ce qui est caché derrière votre typedefs. La réponse est valide.
ok vous avez raison
où vous foutu?
OriginalL'auteur hmjd
Passer un pointeur vers une struct objet:
OriginalL'auteur ouah
Espère que ce programme aide!
Dites que vous êtes d'avoir
struct { ... }
, alors vous devez appelerinsert_data(int, struct *)
et pasinsert_data(int, struct)
. Passer l'adresse de la structure.ce est agréable, mais vous travaillez avec des données non initialisée ici. aussi ignorant tout type de contrôle (malloc, libère).
D'accord. J'ai essayé de démontrer comment envoyer une adresse d'une structure au lieu de struct.
vous avez envoyé une copie d'un pointeur sur struct l'omi. pour envoyer l'adresse de la structure, il avait besoin d'une &struct .
OriginalL'auteur Sangeeth Saravanaraj
Je ne suis pas tout à fait sûr de ce que c'était:
Donc, j'ai nettoyé votre programme un peu et a obtenu aucune mise en garde, après avoir mis l'adresse de la structure dans l'appel,
insert_data(1, &variable_of_type_Struct);
OriginalL'auteur octopusgrabbus
insert_data
attend unvoid*
, vous mettez unData
.- Il manquer un niveau d'indirection.
OriginalL'auteur md5