Forum: Compiler & IDEs Frage zu Headerdateien ( AVR / Atmel Studio )


von Valentin S. (lochrasterer)


Lesenswert?

Hallo Leute
Ich bin gerade daran, eines meiner gerade angekommenen 
HD44780-kompatiblen LC-Displays anzusteuern. Dafür wollte ich die 
lcd-routines.h und .c hier von 
wwww.mikrocontroller.net/articles/AVR-GCC-Tutorial/LCD-Ansteuerung 
nehmen.
Wenn ich im Programm schreibe:
...
#include <lcd.routines.h>
...
kommt die Fehlermeldung:
Error  1  lcd-routines.c: No such file or directory
Ich denke mal das heißt, dass Atmel Studio nicht weiß, wo der header 
ist.

Meine Fragen:
1. Stimmt es, dass ich im Programm
   #include <lcd.routines.h>
   schriben muss?
2. Wohin muss ich den header reinkopieren, dass Atmel Studio weiß, wo er 
ist?

von Karl H. (kbuchegg)


Lesenswert?

Valentin S. schrieb:

> #include <lcd.routines.h>

Es gibt einen Unterschied zwischen
1
#include <lcd-routines.h>
und
1
#include "lcd-routines.h"

spitze Klammern bedeuten, dass es sich um einen sog. System-header 
handelt. Also einen, der zum C System gehört. Dementsprechend sucht der 
Compiler diese Header in den Systemverzeichnissen.
Gänsefüsschen bedeutet, dass es ein projektspezifischer Header ist. D.h. 
der Compiler sucht den in den Verzeichnissen, die ihm als zum Projekt 
zugehörig bekannt sind. Das beinhaltet normalerweise auf jeden Fall das 
Verzeichnis, auf dem das benutzende C-File ist.

von Valentin S. (lochrasterer)


Lesenswert?

Danke Für die Info
Ich habe die spitzen Klammern wie du gesagt hast ersetzt und den header 
in Das Projektverzeichnis Also Dokumente\Atmel 
Studio\6.1\Uhr(=Projektname)reingezogen und kompiliert aber ich bekomme 
immer noch die gleiche Fehlermeldung. wenn ich auf den Header 
rechtsklick und dann goto implementation klicke öffnet den Header aber.

Also der Header ist dort wo er sein soll und Atmel Studio Findet ihn 
auch aber die oben genannte Fehlermeldung zeigt es immer noch an.

von Karl H. (kbuchegg)


Lesenswert?

Moment mal.
1
Error 1 lcd-routines.c: No such file or directory

Da ist vom C-File die Rede.
Da ist das falsche File im Projekt eingetragen.

von Karl H. (kbuchegg)


Lesenswert?

> ... Dokumente\Atmel Studio\6.1\Uhr(=Projektname) ...


Ich verweigere ehrlich gesagt auch für mich diesen (in meinen Augen) 
Blödsinn mit benutzerbezogenem Dokumentenverzeichnis und mach das so, 
wie ich das immer gemacht habe.

Auf C: im Rootverzeichnis (oder auf der D: Platte, je nachdem) gibt es 
ein Projektverzeichnis. Dort ein Subverzeichnis für AVR und dort dann 
wieder Subverzeichnisse für die einzelnen Projekte. Wobei ich mich an 
die einfache Vorgabe halte: keine Leerzeichen in Pfadnamen, keine 
Umlaute, Sonderzeichen nur wenns nicht anders geht und wenn das 
Sonderzeichen ein _ ist.

Solange man auf ältere Tools angewiesen ist, hat sich das bei mir 
bewährt, da nichts drauf zu bauen, dass alle mit diesem 
'BWLer-Schnickschnack' klar kommen. Ich brauch keinen Pfad "Powerpoint 
Mänager Schulung #2, Dezember 2013". Ich finde meine Sachen auch mit 
einfacheren und kürzeren Pfadnamen problemlos wieder :-)

von Valentin S. (lochrasterer)


Angehängte Dateien:

Lesenswert?

Oh ja.
Ich hab noch mal ein anderes Projekt aufgemacht und es neu probiert.
das Problem besteht immer noch. (s. Screenshot)

von Valentin S. (lochrasterer)


Lesenswert?

ich hab jetzt noch mal ein bisschen probiert aber es geht einfach nicht. 
kann mir niemand helfen?

von Andreas W. (geier99)


Lesenswert?

Valentin S. schrieb:
> ich hab jetzt noch mal ein bisschen probiert aber es geht einfach nicht.
> kann mir niemand helfen?

ich denke die Antwort hat K.H. schon geschrieben.

Probiere mal "vernünftige" Pfad und Dateinamen.

von Valentin S. (lochrasterer)


Lesenswert?

Sorry. ich hab den Post von Karl Heinz nicht gesehen.
Wie meint ihr das mit kürzeren namen? Als ich Atmel Studio installiert 
hab, hat es automatisch den Ordner Atmel Studio im Verzeichnis 
Bibliotheken\Dokumente angelegt mit dem Unterordner 6.1, in dem meine 
Projekte direkt gespeichert werden.
Also:
Bibliotheken\Dokumente wurde von Win7 angelegt
und
Atmel Studio\6.1\ wurde von Atmel Studio angelegt

Aber was hat das damit zu tun, dass es den header nicht Findet?

von Karl H. (kbuchegg)


Lesenswert?

Valentin S. schrieb:
> Sorry. ich hab den Post von Karl Heinz nicht gesehen.
> Wie meint ihr das mit kürzeren namen? Als ich Atmel Studio installiert
> hab, hat es automatisch den Ordner Atmel Studio im Verzeichnis
> Bibliotheken\Dokumente angelegt mit dem Unterordner 6.1, in dem meine
> Projekte direkt gespeichert werden.

Ja schön.
Deswegen muss man das aber noch lange nicht mitmachen.

> Also:
> Bibliotheken\Dokumente wurde von Win7 angelegt

Das Problem ist, dass es diesen Pfad so in Wirklichkeit gar nicht gibt. 
Das ist so eine Art Pseudopfad, der vom Windows 'on the Fly' theoretisch 
immer auf den richtigen Pfad umgemappt wird. Theoretisch.
Versuch einfach mal mit dem Explorer über den normalen Weg auf der 
Platte C: diesen Pfad zu finden. Du wirst dich wundern, der heisst in 
Wirklichkeit ganz anders. Und das beginnt damit, dass es auf C: gar kein 
Verzeichnis "Benutzer" gibt. Das heisst nämlich in Wirklichkeit "user" 
(oder "users", weiss nicht mehr genau)


> Aber was hat das damit zu tun, dass es den header nicht Findet und was
> kann ich tun, dass er ihn benutzen kann?

Es muss nichts damit zu tun haben. Aber es kann.
Und darum riskiere ich das erst gar nicht. Das sind Dinge mit denen will 
ich mich nicht rumärgern. Meine AVR-Projekte kommen auf

C:\Projekte\AVR\Frequency
C:\Projekte\AVR\Uhr_01
C:\Projekte\AVR\Test
C:\Projekte\AVR\Forum_01
C:\Projekte\AVR\Lib\LCD
C:\Projekte\AVR\Lib\USART
....

und damit hat sich für mich die Sache.
Ist auch wesentlich einfacher, die zum Archivieren im Explorer zu finden 
und zu zippen :-)

von Fabian O. (xfr)


Lesenswert?

Es zwingt dich ja niemand, das Projekt in diesem Ornder anzulegen. Vor 
allem solltest Du keine Sonderzeichen wie '+' im Pfad benutzen.

Probier mal statt:
C:\Users\Valentin\Documents\Atmel 
Sutdio\6.1\ATmega8+LCD\Atmega8+LCD\ATmega8+LCD.c
einen einfachen Pfad wie:
C:\Projekt\ATmega8_LCD\main.c

von Valentin S. (lochrasterer)


Lesenswert?

Jetzt hat's funktioniert.
Erst falsche Klammern, Dann die falsche Datei und der eigentliche 
Fehler:
eine dumme Idee der Microsoft-Programmierer, die helfen soll und ohne 
die Hilfe von euch auch mein Projekt blockiert hätte.

Danke

von Karl H. (kbuchegg)


Lesenswert?

Valentin S. schrieb:

> eine dumme Idee der Microsoft-Programmierer, die helfen soll

Das musst du verstehen.
BWL Studenten und Manager finden doch sonst ihre Dateien nicht mehr! Wer 
ahnt denn schon das die Datei "Stbtrg_2013.doc" wichtige Informationen 
enthält? Nein, die muss natürlich "ungerechtfertigte 
Steuerhinterziehungen und Schmiergeldzahlungen 2013, vertraulich.DOC" 
heissen. Excel und Word kommen damit klar. Aber viele alte oder ältere 
Entwicklertools, die zum Teil noch auf altem DOS Code basieren, und wo 
ein Werkzeug den Dateinamen an weitere Werkzeuge weitergibt, eben nicht.

Und genau deshalb lass ich mich auf so einen (in meinen Augen) 
Schwachsinn nicht ein. Da ist mir jede Sekunde zu viel ärgern schon eine 
Sekunde zuviel. Ich bin Software-Entwickler. Ich kann eine 
Dateibezeichnung auch dann lesen, wenn sie keine Umlaute und/oder 
Sonderzeichen enthält und nicht über 2 Zeilen geht :-) Ich bevorzuge 
lieber kurze, dafür aber prägnante Dateinamen. gerne auch schon mal mit 
Abkürzungen für bestimmte Begriffe. Die dafür aber dann durchgängig.

von Valentin S. (lochrasterer)


Lesenswert?

Ich dachte halt das wären direkte, nicht sehbare verzeichnisse auf der 
Festplatte und fand es desshalb auch ganz praktisch aber jetzt mach ich 
mir einfach selber ein Paar Ordner.
DAnke für den Tipp.

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.