Forum: Compiler & IDEs #include im Atmel Studio 6.1


von Florian (Gast)


Lesenswert?

Hallo,

ich bin gerade dabei auf das Atmel Studio 6.1 umzusteigen. Zuvor hatte 
ich das AVR Studio 4.19 benutzt und mich lange dagegen gesträubt das 6er 
zu verwenden. Meine Gründe waren vor allem die Größe und Bedienbarkeit 
jedoch auf Grund neuer Devices und Tools (evtl mal mit QTouch 
experimentieren) wollte ich jetzt doch umsteigen.

Leider klappt schon die erste Compilierung nicht. Problem:
In der Haupt-C-Datei erfolgen die #includes z.B. #include <avr/io.h> 
sowie auf die eigene #include "uart.c".
Wird das Projekt compiliert kommt als Fehlermeldung in uart.c: "'UBRRH' 
undeclared".
Die gleiche Fehlermeldung wird auch für alle anderen Register und Ports 
in uart.c geliefert.
Es kann doch nicht sein, dass die includes in allen c-files des Projekts 
erneut angegeben werden müssen. Die uart.c wurde im Solution Explorer 
des Atmel Studios  hinzugefügt.

Im Internet hat sich leider nichts vernünftiges gefunden und bem AVR 
Studio 4.x hat es immer in dieser Weise funktioniert weshalb ich nciht 
weiß ob evtl irgendwo in den Einstellungen noch ein Häckchen gesetzt 
werden muss...

Ich hoffe es kann jemand helfen!

Vielen Dank!

von Patrick (Gast)


Lesenswert?

Florian schrieb:
> In der Haupt-C-Datei erfolgen die #includes z.B. #include <avr/io.h>
> sowie auf die eigene #include "uart.c".

Wieso inkludierst Du C-Dateien? Sehr schlechte Praktik - zumal diese

Florian schrieb:
> uart.c [...) im Solution Explorer des Atmel Studios  hinzugefügt

wurde.
Damit wird einmal der Inhalt dieser C-Datei in Deine "Haupt-C-Datei" 
eingefügt und dann compiliert, zum Anderen die uart.c noch einmal 
separat compiliert - das ist mit Sicherheit nicht das gewünschte 
Verhalten.

Florian schrieb:
> Es kann doch nicht sein, dass die includes in allen c-files des Projekts
> erneut angegeben werden müssen.

Doch; genau so funktioniert das.

Regel:
- Jede C-Datei wird separat compiliert; damit "sieht" der Compiler nur 
das, was innerhalb dieser Datei (bzw. der darin inkludierten Header) 
definiert wurde - nicht mehr und nicht weniger (Ausnahme sind z. B. 
Defines, welche man dem Compiter via Kommandozeilenparameter mitgibt).
- Inkludiert werden nur H-Dateien; diese enthalten globale (d. h. in 
mehreren C-Dateien verwendete) Definitionen bzw. die "öffentliche 
Schnittstelle" der zugehörigen C-Datei.

von Florian (Gast)


Lesenswert?

Hallo Patrik!

Danke für die Antwort!

Da es im AVR Studio 4.x immer so ohne Probleme funktioniert hat hatte 
ich mir darüber nie Gedanken gemacht. Das Atmel Studio scheint das wohl 
anders zu behandeln. Da werde ich wohl meine Arbeitsweise etwas 
umstellen müssen. ;-)

Werden die Dateien aus dem Solution explorer gelöscht compiliert das 
Projekt jedenfalls schon einmal (ohne Fehlermeldung).

Auf jeden Fall sehr gewöhnungsbedürftig das "neue" AVR Studio...

von Walter T. (nicolas)


Lesenswert?

Florian schrieb:
> Auf jeden Fall sehr gewöhnungsbedürftig das "neue" AVR Studio...

Das gibt sich. Bis auf den Fuse-Editor vermißt man nach einer Woche 
nichts mehr aus dem alten AVR-Studio. Dafür sind Syntax-Highlightig und 
Auto-Vervollständigen einfach so viel besser geworden.

Wenn Du nur AVRs machen willst und Du die Atmel-Studio-Installation für 
zu riesig hälst, lösche die folgenden Ordner:
[...]/Atmel/Atmel Toolchain/AVR32 GCC
[...]/Atmel/Atmel Toolchain/ARM GCC
[...]/Atmel/Atmel Studio Extension/AVR32 GCC
[...]/Atmel/Atmel Studio Extension/ARM GCC

dann ist das Werkzeug sogar kleiner als eine nackte 
Visual-C-Installation.

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.