Hi, ich habe meinen Sourcecode in verschiedene Files *.c und *.h aufgeteilt. Die Header-dateien werden entsprechend in der main.h eingebunden. Soweit funktioniert es auch einwandfrei. Versuche ich jedoch in irgendeiner der anderen (nicht main.h) Header-Dateien Variablen anzulegen, kommt folgende Fehlermeldung: gcc plug-in: Error: Object file not found on expected location Y:\Projekte\g800016_Dispenser\uC_Software\80016_Dispenser_v_0_1_0\defaul t\80016_Dispenser.elf Als Beispiel habe ich ein Projekt in den Anhang gepackt. Der Fehlerteufel steckt in dem Fall in der adc.h in der Zeile "uint8_t test = 0;". Kommentiert man diese raus, so funktioniert es wieder. Mache ich irgendwo einen Denkfehler? Ich verwende Avr-Studio 4.12 Build 460, Avr-gcc 3.4.4 und Avr-libc 1.2.5
Du definierst Variablen in Headern, wo sie (wie Funktionen auch) nur deklariert sein sollten. Im Header sollte stehen: extern uint8_t test; und in der .c-Datei dann das: uint8_t test = 0; Ich bin mir nicht ganz sicher, ob das der Fehler ist, den dein Compiler meldet, weil dieser etwas komisch aussieht.
Danke für den Tip. Wahrscheinlich sollte ich das wirklich so machen. Nur habe ich festgestellt, dass wenn ich die Variable gleich initialisiere und nicht erst später, dann weniger Programmspeicher verbrate. Gruß Slowflyer
Wenn die Variable in der Headerdatei deklariert und in einem C-Modul definiert und initialisiert wird, dann ist das vom erzeugten Code her exakt dasselbe wie die (falsche) Definition und Initialisierung in einer von nur einem Modul eingebundenen Headerdatei. Wenn sich das bei Dir anders verhält, ist noch irgendwas anderes nicht in Ordnung.
Hmm... Klingt eigentlich logisch, ich werd mal bei Gelegenheit da mal genauer nachforschen.
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.