MP3-Player Compilierungsproblem

OP #1276679
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
Gast #1276693
redefinition of'struct _AUDIO_DATA'

das wird irgendwoanders schonmal definiert
entweder fehlt eine #include irgendwo oder die .h ist nicht korrekt 
geschrieben
OP #1276987
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.