Forum: Mikrocontroller und Digitale Elektronik Variablen in Headerdatei


von Jens (Gast)


Lesenswert?

Hi,
ich habe folgendes Problem:
Ich wollte ein Array in einer Headerdatei deklarieren
1
char a []={'a','b','c'};
doch beim Kompilieren kommt die Meldung "test.elf" nicht gefunden.
Kommentiere ich das Array aus, funktioniert alles.
WARUM?

Software: AVR-Studio und WinAVR

Gruß Jens

von Marius W. (mw1987)


Lesenswert?

Da du keine genaue Fehlermeldung nennst, gehe ich davon aus, dass dein 
Array möglicherweise doppelt vorkommt (1 x in main.c und 1 x in 
header.c, da beide header.h includen).

Mehr kann ich dir ohne Code nicht sagen.

Außerdem pakt man keine Arrays in Header-Dateien! Die gehören in die 
entsprechende C-Datei.

MfG
Marius

von Johannes M. (johnny-m)


Lesenswert?

Jens wrote:
> Hi,
> ich habe folgendes Problem:
> Ich wollte ein Array in einer Headerdatei deklarieren
>
1
> char a []={'a','b','c'};
2
>
Damit hast Du es aber nicht nur deklariert sondern auch definiert , 
und definieren darfst bzw. musst Du es in einem Projekt genau ein 
einziges Mal , während deklarieren beliebig oft geht. Damit der 
Compiler Definition und Deklaration einer Variable auseinanderhalten 
kann, muss bei der Deklaration das Schlüsselwort extern verwendet 
werden.

> doch beim Kompilieren kommt die Meldung "test.elf" nicht gefunden.
Das deutet auf den entsprechenden Linker-Fehler hin, der dazu führt, 
dass kein Output erzeugt wird.

Allgemein: Eine Definition einer Variable erzeugt die Variable und 
reserviert Speicherplatz für sie. Eine Deklaration hingegen sagt 
lediglich dem Compiler "Da ist irgendwo anders eine Variable mit dem 
Namen und dem Typ definiert, tu so, als könntest Du sie sehen und 
überlass dem Linker den Rest".

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.