Struct wird nicht erkannt/gefunden

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
ZimZalabim
Beiträge: 21
Registriert: So Feb 24, 2013 6:27 pm

Struct wird nicht erkannt/gefunden

Beitrag von ZimZalabim » Mo Nov 18, 2013 3:05 pm

Hallo Zusammen

Ich verwende zu C programmieren Geany( auf Lubuntu) mit gcc-version 4.7.3

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>

struct ListItem
{
	int data;
	struct ListItem *next;
	struct ListItem *prev;
};

int main(void)
{
	struct ListItem a;
	a.data = 0;
	a.next = NULL;
	a.prev = NULL;
	struct ListItem b;
	b.data = 1;
	b.next = NULL;
	b.prev = NULL;
	struct ListItem c;
	c.data = 2;
	c.next = NULL;
	c.prev = NULL;
	
	a.next = &b;	// a zeigt auf b
	b.prev = &a;	// b zeigt auf a
	b.next = &c;	// b zeigt auf c
	c.prev = &b;	// c zeigt auf b
	
	int cnt = 0;
	for(ListItem *i = &a; i != NULL; i = i->next)
	{
		printf("Item %d value is %d\n\r",cnt , i->data);
		cnt++;
	}

	/*
	int cnt = 0;
	ListItem *i = NULL;
	for( *i = &a; i != NULL; i = i->next)
	{
		printf("Item %d value is %d\n",cnt , i->data);
		cnt++;
	}
	*/

	return 0;
}
Beim compilieren bekomme ich folgenden Fehlermeldungen:

Code: Alles auswählen

Fehler: unbekannter Typname >>ListItem<<
Fehler: Anfangsdeklaration in der >>for<<-Schleife sind nur imc99-modus erlaubt
Woher weis ich welchen standatr ich verwende bzw. wie kann ich Geany auf c99 umstellen?

Es so zu schreiben wie es in dem Auskomentierten bereich steht bringt nichts

Vielen Dank für Eure Hilfe

Edit by cloidnerux: Code-Tags um Fehlermeldung

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Struct wird nicht erkannt/gefunden

Beitrag von cloidnerux » Mo Nov 18, 2013 3:28 pm

Woher weis ich welchen standatr ich verwende bzw. wie kann ich Geany auf c99 umstellen?
In der Regel muss man das nicht, ich gehe gerade mal davon aus, dass an deinem Projekt falsch ist. Du kannst versuchen mit einem;:

Code: Alles auswählen

-std=C99
deinen Compiler mitzuteilen, welche Version du nutzen möchtest.
Bitte kopiere das nächste mal die genauen Fehlermeldungen von deinem Compiler inklusive Zeilennummer und vlt den Hinweis, welche Zeile das doch ist.
Redundanz macht wiederholen unnötig.
quod erat expectandum

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

Re: Struct wird nicht erkannt/gefunden

Beitrag von Xin » Mo Nov 18, 2013 3:42 pm

ZimZalabim hat geschrieben:

Code: Alles auswählen

Fehler: unbekannter Typname >>ListItem<<
Fehler: Anfangsdeklaration in der >>for<<-Schleife sind nur imc99-modus erlaubt
Der Datentyp heißt "struct ListItem", nicht "ListItem".

Ansonsten wie cloidnerux schon sagte: -std=C99.
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.

ZimZalabim
Beiträge: 21
Registriert: So Feb 24, 2013 6:27 pm

Re: Struct wird nicht erkannt/gefunden

Beitrag von ZimZalabim » Mo Nov 18, 2013 4:18 pm

Wenn ich

Code: Alles auswählen

gcc -std=c99 -Wall -c test_03.c -o test_03.out
eingebe bekomme ich das Als Fehlermeldung

Code: Alles auswählen

test_03.c: In Funktion »main«:
test_03.c:33:6: Fehler: unbekannter Typname: »ListItem«
test_03.c:33:20: Warnung: Initialisierung von inkompatiblem Zeigertyp [standardmäßig aktiviert]
test_03.c:33:40: Fehler: Anfrage nach Element »next« in etwas, was keine Struktur oder Variante ist
test_03.c:35:43: Fehler: Anfrage nach Element »data« in etwas, was keine Struktur oder Variante ist

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Struct wird nicht erkannt/gefunden

Beitrag von cloidnerux » Mo Nov 18, 2013 5:24 pm

Der Fehler liegt in diesem Konstrukt:

Code: Alles auswählen

ListItem *i = NULL;
dass eigentlich ein

Code: Alles auswählen

struct ListItem *i = NULL;
sein müsste.
Redundanz macht wiederholen unnötig.
quod erat expectandum

ZimZalabim
Beiträge: 21
Registriert: So Feb 24, 2013 6:27 pm

Re: Struct wird nicht erkannt/gefunden

Beitrag von ZimZalabim » Mo Nov 18, 2013 6:21 pm

Vielen Dank Euch Beiden

Mit

Code: Alles auswählen

for(struct ListItem ...
Hat es geklappt. Nur noch ein Frage stellt sich mir: Kann ich irgend wie gleich in dem Quellcode dem comiler mitteilen nach welchem Standart er das comilieren soll? Oder mus ich den Comiler bzw. die IDE Umstellen, das die immer C99 verwenden?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Struct wird nicht erkannt/gefunden

Beitrag von cloidnerux » Mo Nov 18, 2013 7:14 pm

Mit g++ sollte das von alleine Funktionieren, ansonsten musst du deinem Compiler mitteilen. Vlt kann man das auch als Voreinstellung lösen, aber ich kenne mich da nicht so gut aus.
Redundanz macht wiederholen unnötig.
quod erat expectandum

ZimZalabim
Beiträge: 21
Registriert: So Feb 24, 2013 6:27 pm

Re: Struct wird nicht erkannt/gefunden

Beitrag von ZimZalabim » Mo Nov 18, 2013 11:06 pm

Juhu Es lässt sich bei Geany->Erstellen->Kommandos zum Erstellen konfigurieren
einfach einstellen.

Danke Cloidnerux

Antworten