Variablen in Headerdatei

Gast #931544
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
#931551
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
#931556
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".

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