C struct void* - Zeiger
Ich habe eine struct definiert als:
typedef struct {
int type;
void* info;
} Data;
und dann habe ich noch einige andere Strukturen, die ich zuordnen möchten, void* mithilfe der folgenden Funktion:
Data* insert_data(int t, void* s)
{
Data * d = (Data*)malloc(sizeof(Data));
d->type = t;
d->info = s;
return d;
}
struct {
...
} Struct#;
dann habe ich nur nennen
insert_data(1, variable_of_type_Struct#);
Wenn ich compile dieser gibt es eine Warnung
warning: assignment from incompatible pointer type
ich versucht, wandeln Sie die variable einfügen (void*), aber hat nicht funktioniert
insert_data(1, (void *) variable_of_type_Struct#);
Wie kann ich loswerden dieser Warnung?
Dank
wo genau ?
Bitte überprüfen Sie mein Beispiel-code.
Casting das Ergebnis
Ich habe das Gefühl dieser scharfe ' # ' - Zeichen in Ihrem code. Sie sind verbunden mit Makros nicht sicher sind, was machen Sie in Ihrem code.
Warum wurde dieses struct {...} Struct#; in deinem code? Ich bin nur neugierig.
Bitte überprüfen Sie mein Beispiel-code.
Casting das Ergebnis
malloc
unnötig. Data * d = malloc(sizeof(Data));
würde ausreichen.Ich habe das Gefühl dieser scharfe ' # ' - Zeichen in Ihrem code. Sie sind verbunden mit Makros nicht sicher sind, was machen Sie in Ihrem code.
Warum wurde dieses struct {...} Struct#; in deinem code? Ich bin nur neugierig.
InformationsquelleAutor Nitrate | 2012-04-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Pass in der Adresse die struct ist, nicht eine Kopie davon (also nicht per value übergeben):
Funktioniert einwandfrei: ideone.com/rHD5f
was für ein Typ ist deine variable? btw keine müssen hier gewirkt. Provede entsprechenden Typen, wir sind keine Magier zu sehen, was hinter Ihr Typdefinitionen. Antwort gültig ist obwohl.
okay, du hast Recht
wo Sie vermasselt?
InformationsquelleAutor hmjd
Übergeben Sie einen Zeiger auf das struct-Objekt:
InformationsquelleAutor ouah
Ich hoffe dieses Programm hilft!
Sagen Sie, dass Sie
struct { ... }
, dann müssen Sie rufen Sieinsert_data(int, struct *)
und nichtinsert_data(int, struct)
. Übergeben Sie die Adresse der Struktur.das ist schön, aber Sie arbeiten mit uninitialised data hier. auch das ignorieren jeglicher Art von Kontrollen (malloc, befreit).
Stimmen. Ich habe versucht zu zeigen, wie das senden einer Adresse eines struct anstelle von struct.
Sie schickte eine Kopie der Zeiger auf struct imo. senden Adresse der struct, er braucht &Struktur .
InformationsquelleAutor Sangeeth Saravanaraj
Ich bin mir nicht ganz sicher, was das war:
So, ich räumte Ihr Programm ein wenig und bekam keine Warnungen, nachdem man die Adresse der struct in den Ruf,
insert_data(1, &variable_of_type_Struct);
InformationsquelleAutor octopusgrabbus
insert_data
wartet einevoid*
legen Sie eineData
.Es verpassen, eine Ebene der Dereferenzierung.
InformationsquelleAutor md5