Forum: Mikrocontroller und Digitale Elektronik MP3-Player Compilierungsproblem


von Johannes (menschenskind)


Lesenswert?

Hallo

Mein Headerdatei enthält u.a. folgendes:

typedef struct _AUDIO_DATA{
  u16 bitrate;
  u16 sample_rate;
  u08 is_stereo;
}AUDIO_DATA;

Ich erhalte vom Compiler für die 1. Zeile:  error: redefinition of 
'struct _AUDIO_DATA'

Der Code ist vom alp_mp3_8515-Projekt, hier aus dem Forum.
1
http://www.mikrocontroller.net/topic/14821

von Bernd (Gast)


Lesenswert?

AUDIO_DATA ist in vs1001.h bereits definiert.

von gast (Gast)


Lesenswert?

redefinition of'struct _AUDIO_DATA'

das wird irgendwoanders schonmal definiert
entweder fehlt eine #include irgendwo oder die .h ist nicht korrekt 
geschrieben

von Johannes (menschenskind)


Lesenswert?

ist ziemlich seltsam.

Ich habe die Dateien aus dem Archiv nochmal in einen anderen Ordner 
entpackt und mit diesen Dateien nochmal ein neues Projekt im AVR-Studio 
erstellt und compilieren lassen.
Haufenweise Fehler: cbi, sbi, outp... undefined reference.

Wieso kommen die nicht bei meinem ursprünglichen Projekt?
Oder hab ich bei der Projekterstellung was falsch gemacht? Man kann da 
ja den Debugger-Typ festlegen.

von Sven P. (Gast)


Lesenswert?

Wenn das tatsächlich in deiner Header-Datei steht, ist das ganz 
miserabler Programmierstil.

DEFINITIONEN GEHÖREN NICHT IN HEADER-DATEIEN!!!111einself

Was die doppelte Deklaration angeht: So ein Rahmen hilft da:
1
#ifndef BLA_H
2
#define BLA_H
3
...
4
#endif
Nein, der Rahmen hilft nicht gegen doppelte Definitionen.

von Johannes (menschenskind)


Lesenswert?

Auch mit Rahmen wird's nicht besser.

Aber ich dachte, dass gerade Headerdateien für Definitionen und anderen 
Kleinkram da sind.
Nur echter Funktionscode sollte da meines Wissens eher nicht drinstehen.

Ich hab echt alle Dateien durchsucht, diese struct wird wirklich nur 
dort erstellt.
Ganz schön nervig dieser Fehler!

von Johannes (menschenskind)


Lesenswert?

Hallo

Könntet ihr euch nicht mal schnell den Code reinladen und compilieren, 
nur um einen Fehler von meinem AVR-Studio evtl. auszuschließen?

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Johannes Hofmann schrieb:

> Könntet ihr euch nicht mal schnell den Code reinladen und compilieren,
> nur um einen Fehler von meinem AVR-Studio evtl. auszuschließen?

OK.
Hab das original Projekt aus der Codesammlung genommen.
Neues AVR Studio Projekt.
Als Prozessor hab ich einen Mega8515 eingestellt.

Alle Source Files hinzugefügt.
Alle Header Files hinzugefügt.

Für die sbi, cbi, outp, inp Fehler hab ich in types.h schnell ein paar 
Makros eingefügt

compiliert.

Um die signedness Warnungen darfst du dich selber kümmern :-)

von holger (Gast)


Lesenswert?

Füg folgende Zeile in die Dateien mit
den Fehlermeldungen zu sbi,cbi,outp.. ein.

#include <compat/deprecated.h>

Dann kompiliert der Originalcode bei mir.
Gibt noch einen Haufen Warnings, aber darum
kann man sich später noch kümmern.

Ich habe es allerdings nicht mit AVR Studio
ausprobiert, sondern direkt eingegeben:

make clean
make all

Es wird dann eine HEX Datei erzeugt.

>Ich erhalte vom Compiler für die 1. Zeile:  error: redefinition of
>'struct _AUDIO_DATA'

Die Fehlermeldung bekomme ich mit dem Originalcode gar nicht.
Wie sieht denn dein Code aus?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.