Datum: 20.07.2008 13:27
Hi, ich habe folgendes Problem: Ich wollte ein Array in einer Headerdatei deklarieren
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
Datum: 20.07.2008 13:32
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
Datum: 20.07.2008 13:36
Jens wrote: > Hi, > ich habe folgendes Problem: > Ich wollte ein Array in einer Headerdatei deklarieren >
> char a []={'a','b','c'}; > |
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
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel