MP3-Player Compilierungsproblem

OP #1276679
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
OP #1276987
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.
Gast #1277020
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.
OP #1278152
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!
#1279124
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 :-)
Angehängte Dateien:
Gast #1279131
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren