Hi ich mache meine ersten C Schritte und brauche eure Hilfe. Ich habe Probleme, mein C Programm bestehend aus 2 Sourcefiles und 3 Headerfiles zu linken. Compiliert wird alles und es werden die beiden Objektdateien erstellt aber das elf file nicht! Die Fehlermeldung im A-Studio Buildwindow ist: Build started 7.11.2006 at 22:39:09 avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -O0 -fsigned-char -MD -MP -MT Machine.o -MF dep/Machine.o.d -c ../Machine.c avr-gcc.exe -mmcu=atmega16 -minit-stack=0x400 Machine.o SD_Card.o -o Machine.elf SD_Card.o: In function `init_sd_card': ../SD_Card.c:42: multiple definition of `sd_wpointer' Machine.o:../Machine.c:113: first defined here SD_Card.o: In function `init_sd_card': ../SD_Card.c:42: multiple definition of `sd_rpointer' Machine.o:../Machine.c:113: first defined here SD_Card.o: In function `init_sd_card': ../SD_Card.c:42: multiple definition of `argument' Machine.o:../Machine.c:113: first defined here make: *** [Machine.elf] Error 1 Build succeeded with 0 Warnings... Das passiert, weil ich mehrfach das Headerfile mit den jeweiligen Definitionen einbinde. Allerdings steht bei jedem Headerfile oben: #ifndef sd_card_h #define sd_card_h .... und unten #endif //sd_card_h Es sollte doch damit nur einmal eingebunden werden. Man macht das doch eingentlich so. Oder mache ich prinzipiell was falsch? Vielen Dank für sachdienliche Hinweise Grüsse Felix
> Oder mache ich prinzipiell was falsch?
Ja: in ein Headerfile gehören nur Deklarationen, keine Definitionen.
Also in sd_card.h steht:
extern uint16_t sd_rpointer, sd_wpointer;
...und in einer der C-Dateien steht dann:
uint16_t sd_rpointer, sd_wpointer;
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.