Hallo, ich habe das AVR Studio 4 und möchte mein Projekt aufteilen und habe dazu eine Header Datei angelegt unter: Header Files über #include "my_header.h" habe ich diesen eingefügt. Leider wird dieser aber anscheinend nicht erkannt... Ich habe gelesen das ich im Toolchain, bei mir WinAVR, noch das Verzeichnis angeben muss, indem der header liegt. Leider finde ich dazu im Studio 4 keine Einstellungsmöglichkeiten. Wo muss ich suchen?
user schrieb: > Hallo, > ich habe das AVR Studio 4 und möchte mein Projekt aufteilen und habe > dazu eine Header Datei angelegt unter: Header Files > > über #include "my_header.h" habe ich diesen eingefügt. Wenn du es so angibst, dann wird das entsprechende File nur am selben Verzeichnis gesucht, an dem auch das File sich befindet, aus dem heruas der #include gemacht wird. Bzw. wenn es so nicht zu finden ist, dann werden die eingestellten Directories abgesucht. > Ich habe gelesen das ich im Toolchain, bei mir WinAVR, noch das > Verzeichnis angeben muss, indem der header liegt. Kann man machen. Du kannst aber auch den im #include den Pfad zur Header Datei angeben. > Leider finde ich dazu im Studio 4 keine Einstellungsmöglichkeiten. > > Wo muss ich suchen? Fangfrage? Menü 'Project' Menüpunkt 'Configuration Options' Im Dialog dann den Reiter 'Include Directories'
Karl Heinz Buchegger schrieb: > Kann man machen. Du kannst aber auch den im #include den Pfad zur Header > Datei angeben. Das hört sich gut an. Sieht das dann in etwa folgendermaßen aus: #include "C:\Users\...\...\Programm" Karl Heinz Buchegger schrieb: > Fangfrage? > Menü 'Project' > Menüpunkt 'Configuration Options' > Im Dialog dann den Reiter 'Include Directories' genau das habe ich versucht - leider erfolglos !? Ich geb da den kompletten Pfad an in welchem die header liegt und AVR Studio macht ein ".\" draus.
user schrieb: > Das hört sich gut an. Sieht das dann in etwa folgendermaßen aus: > > #include "C:\Users\...\...\Programm" Zum Beispiel (ich geh mal davon aus, dass die ... Punkte ein Pausenfüller sind) PS: Es ist nicht sehr schlau, das alles in den 'User Pfad' von Windows einzulagern. Dieses 'Benutzer'-Verzeichnis ist für Buchhalter und Sekretärinnen super. Auch für Manager, die ohne Umlaute und Sonderzeichen in den Pfadnamen ihre Power-Point Präsentationen nicht mehr wiederfinden. Aber wir sind Softwareentwickler. Wir haben kein Problem damit, wenn es auf C:, auf der Root, ein Verzeichnis 'Projekte' gibt, unter dem unsere ganzen Softwareprojekte liegen und bei dem es zb ein 'Common' Verzeichnis gibt. Und wir haben auch kein Problem damit, auf Umlaute, die meisten Sonderzeichen und vor allen Dingen Leerzeichen in Pfadnamen zu verzichten. Wir haben deswegen kein Problem damit, weil wir wissen, dass es damit immer wieder mal Probleme gibt, wenn der Hersteller unserer Tools nicht aufgepasst hat. Und so wichtig sind uns diese Dinge nicht, als das wir darauf bestehen würden. > Ich geb da den kompletten Pfad an in welchem die header liegt und > AVR Studio macht ein ".\" draus. Oops. Das ist wohl ein Bug im Studio. Sorry, aber ich benutze diese Variante fast nie. Ich gebe den relativen Pfad zu meinem Common Verzeichnis direkt im #include an.
user schrieb: > beide varianten funktionieren nicht :( Ja, habs gerade gesehen. Wie gesagt: ich geb normalerweise den relativen Pfad im #include an.
In welchem Ordner liegt denn "my_header.h"? Genau den musst Du als Include-Verzeichnis angeben, nicht das übergeordnete Projektverzeichnis. Dass aus dem kompletten Pfad ein ".\" wird, liegt daran, dass AVR Studio für Dich mitdenkt und aus dem im GUI gewählten Ordner einen relativen Pfad macht. Sonst würde das Projekt nur noch auf Deinem PC bzw. in genau dem absoluten Ordner funktionieren und nirgends anders.
nun habe ich das Projekt neu angelegt F:\Projekt\ Ordner_1: my_header.h und main.c drin Ordner_2: gebe ich als Zielverzeichnis des Projektes an >> Leeres Projekt >> Source Files: Add Existing Source Files > main.c >> Header Files: Add Existing Header Files > my_header.h >> zum vorhandenen main Code gebe ich anfangs ein: #include "F:\Projekt\Ordner_1" >> fatal error: F:\Projekt\Ordner_1: No such file or directory
was auch komisch ist: die header und main habe ich vorher in einem anderen Projekt programmiert welches läuft. Da sind Header und Main auch bereits aufgeteilt auf Header Files und Source Files, ohne das irgend ein Directory angegeben war. Ich hab die beiden Dateien main.c und my_header.h einfach kopiert und möchte diese nun in ein neues Projekt einfügen um damit weiter zu arbeiten.
Und wenn Du jetzt Ordner_1 per GUI zu den Include-Directories einfügst, was passiert dann? Es müsste dann eigentlich eins von beiden rauskommen: "./Ordner_1" oder "../Ordner_1" In main.c muss nur stehen:
1 | #include "my_header.h" |
Wenn das wirklich nicht gehen sollte, probier:
1 | #include "Ordner_1/my_header.h" |
oder
1 | #include "../Ordner_1/my_header.h" |
Aber vergiss die absoluten Pfade, vor allem in den Source-Dateien. Die willst Du da nicht drinnen haben.
user schrieb: > Leider wird dieser aber anscheinend nicht erkannt... Und woran machst Du das fest? Wenn der Präprozessor die Headerdatei nicht öffnen kann, gibt es eine eindeutige Fehlermeldung. Gibt es die bei Dir oder funktioniert nur irgendwas anderes nicht, aus dem Du schließt, daß die Headerdatei "nicht erkannt" wird?
user schrieb: > nun habe ich das Projekt neu angelegt > > F:\Projekt\ > Ordner_1: my_header.h und main.c drin main.c und my_header.h liegen in demselben Verzeichnis? Dann sollte ein #include "my_header.h" reichen. > Ordner_2: gebe ich als Zielverzeichnis des Projektes an Warum nimmst Du nicht denselben Ordner? Das verkompliziert doch nur alles. > #include "F:\Projekt\Ordner_1" Backslashes in C??? Gibt es nicht. Wenn doch, sind sie lediglich eine propriertäre Erweiterung desjenigen Compilers. Ausserdem kannst Du keine Ordner "includen", nur Dateien! Wenn schon, dann: #include "F:/Projekt/Ordner_1/my_header.h" Also mit Slashes, nicht mit Backslashes. C hat erstmal nichts mit den Trennern eines Windows-Dateisystems zu tun, schließlich wurde C auch nicht auf/für Windows entwickelt. Aber wie gesagt: Da main.c und my_header.h in demselben Verzeichnis liegen, sollte ein #include "my_header.h" reichen. Liegen C-Source und Includes nicht in demselben Verzeichnis, dann gibt man den Pfad zur Include-Datei relativ an, z.B. #include "../include/my_header.h" Wenn nicht, liegt das an Deiner unsinnigen abweichenden Angabe des Zielordners.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.