Ich möchte einen Zeiger auf eine von zwei Strukturen abhängig vom Wert einer Variablen zu werfen. Ich versuche dies, aber es funktioniert nicht -C - Cast void Zeiger auf die Struktur dynamisch
struct typeA
{
int a;
int x;
}
struct typeB
{
int b;
int a;
int x;
int z;
}
int band=1;
void *ptr;
if(band == 1)
ptr = (struct typeA *)malloc(sizeof(struct typeA));
else if(band == 2)
ptr = (struct typeB *)malloc(sizeof(struct typeB));
printf("A:%d",ptr->a);//error: structure type required instead of void
Was wäre der beste Weg, dies zu tun?
EDIT: Strukturdefinitionen und Fehler (in Code-Kommentaren) hinzugefügt, um mehr Sinn zu machen.
Cast ist nicht notwendig in C. (Auch 'ptr' ist' void * ') Bitte erklären Sie das" nicht funktioniert ". – BLUEPIXY
Ich habe abgelehnt, weil Sie sagen, dass Ihr Code nicht funktioniert, aber Sie sagen nicht, warum, was ist der Fehler oder die Warnung, die der Compiler Ihnen gibt. Ändern Sie Ihre Frage mit dieser Info und ich werde meinen Downvote entfernen. – nbro
Beenden Sie die Umwandlung von 'malloc()', geben Sie aber 'ptr' einen echten Typ. Wenn es wirklich einen guten Grund dafür gibt, dass "ptr" 'void *' ist, dann weise einfach die größere der beiden Größen zu. Und, ähm, * "es funktioniert nicht" * ist eine schreckliche Beschreibung Ihres Problems. Fügen Sie die Fehlermeldung hinzu! – DigitalRoss