enum in struct-->in switch abfragen

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: enum in struct-->in switch abfragen

Beitrag von Dirty Oerti » Do Jun 04, 2009 2:45 pm

Einfach zu korrigieren, diese Fehlermeldungen :)
Du musst sie dir nur einmal ansehen.

Er kennt "GESAMT" nicht. Heißt, du musst ihm entweder GESAMT bekannt machen (per typedef) oder du musst den kompletten Strukturnamen (struct GESAMT) angeben.
Also entweder:

Code: Alles auswählen

typedef struct {
//....
} GESAMT;
Oder:

Code: Alles auswählen

   pointer = (struct GESAMT *)malloc (sizeof(struct GESAMT));
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: enum in struct-->in switch abfragen

Beitrag von nufan » Do Jun 04, 2009 2:47 pm

Bitte poste doch mal den ganzen Code, dann ist es auch bezüglich Zeilennummern bei den Fehlermeldungen einfacher. Du hast da bestimmt seit dem ersten Post was geändert und die neueren hören immer mitten im main auf.
SeriK00 hat geschrieben:`GESAMT' undeclared (first use in this function)
Wurde bereits beantwortet. Warum schreibst du eigentlich alles GROSS? Normalerweise sind das in C nur Konstanten.
SeriK00 hat geschrieben:(Each undeclared identifier is reported only once for each function it appears in.)
Sollte klar sein. Die Fehlermeldung wegen des fehlenden Typs wird nur ein mal pro Funktion ausgegeben, auch wenn der Typ öfters verwendet wird.
SeriK00 hat geschrieben:parse error before ')' token
Da ist einfach eine Klammer bei malloc zu viel.

Code: Alles auswählen

pointer = (GESAMT *)malloc (sizeof(GESAMT)      /* ) gehört hier nicht her */ ;
Den ; am Ende aber nicht vergessen ;)

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: enum in struct-->in switch abfragen

Beitrag von Xin » Do Jun 04, 2009 2:52 pm

Du hast Deine struct GESAMT entfernt/umbeannt...?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: enum in struct-->in switch abfragen

Beitrag von Dirty Oerti » Do Jun 04, 2009 3:24 pm

dani93 hat geschrieben:
SeriK00 hat geschrieben:parse error before ')' token
Da ist einfach eine Klammer bei malloc zu viel.

Code: Alles auswählen

pointer = (GESAMT *)malloc (sizeof(GESAMT)      /* ) gehört hier nicht her */ ;
Also jetzt fehlt eine ;)
Er hat keine Klammer zu viel, das Problem lautet: "Fehler VOR der Klammer" und bezieht sich auf das unbekannte Etwas "GESAMT"
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: enum in struct-->in switch abfragen

Beitrag von nufan » Do Jun 04, 2009 3:38 pm

Dirty Oerti hat geschrieben:
dani93 hat geschrieben:
SeriK00 hat geschrieben:parse error before ')' token
Da ist einfach eine Klammer bei malloc zu viel.

Code: Alles auswählen

pointer = (GESAMT *)malloc (sizeof(GESAMT)      /* ) gehört hier nicht her */ ;
Also jetzt fehlt eine ;)
Er hat keine Klammer zu viel, das Problem lautet: "Fehler VOR der Klammer" und bezieht sich auf das unbekannte Etwas "GESAMT"
Uppps ^^
Bin heute wohl etwas verwirrt.... hat schon so gestimmt wie es war.

SeriK00
Beiträge: 34
Registriert: Fr Mai 15, 2009 12:15 pm

Re: enum in struct-->in switch abfragen

Beitrag von SeriK00 » Do Jun 04, 2009 4:07 pm

Vielen dank für Ihre Hilfe.
Jetzt funktioniert alles wie ich haben wollte.

Code: Alles auswählen

#include <stdio.h>
#include <malloc.h>

typedef enum
{
	blau,
	schwarz,
	gelb,
}auswahl;

typedef enum
{
	eins,
	zwei,
	drei,
	vier,
}noten;

 struct gesamt
{
	auswahl farbe;
	noten bewertung;
};

int main (void)
{
	struct gesamt *pointer;
	pointer = (struct gesamt *)malloc (sizeof(struct gesamt));

	pointer->farbe= schwarz;
	printf("\n%d", pointer->farbe);

	pointer->bewertung = zwei;
	printf("\n%d", pointer->bewertung);

	switch(pointer->farbe)
	{
	case blau:
		puts("\nblau");
		break;
	case schwarz:
		puts("\nschwarz");
		break;
	case gelb:
		puts("\ngelb");
		break;
	default:
		puts("\ntest!");
	}
	return 0;
}
Windows XP Prof
Visual Studion 2005
Keil µVision 3

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: enum in struct-->in switch abfragen

Beitrag von nufan » Do Jun 04, 2009 4:24 pm

Wenn du Speicher mit malloc reservierst solltest du ihn nach der Verwendung mit free () wieder freigeben.
Ein

Code: Alles auswählen

free (pointer);
nach dem switch sollte reichen :)

Antworten