Hallo Ich programmiere ein Mega 8 in C mit dem AVR Studio. Wie kann man in das Programm include Dateien einbinden (welche Knöpfe muss ich drücken)? Danke
Ohne AVR-Studio zu kennen: Üblicherweise drückt man keine Knöpfe, sondern schreibt #include "blablubb" einfach selber hin.
Ich habe eine Include Datei geschrieben und möchte diese irgendwo ablegen bzw. sie muss vom Linker mit eingebunden werden. Das Einbinden im Programm durch die Include Anweisung ist mir klar.
bernd schrieb: > Ich habe eine Include Datei geschrieben und möchte diese irgendwo > ablegen bzw. sie muss vom Linker mit eingebunden werden. Dann solltest du die Include entweder in dem Ordner ablegen wo die zu kompilierende '*.c' gespeichert sind oder der Compiler hat einen speziellen Ordner für Includes. Alles weitere verrät das Handbuch / Befehlsreferenz deines Compiler.
@ bernd "Einbinden" ist im Zusammenhang mit AVRStudio und C zumindest ein mehrdeutiger, jedenfalls kein eindeutiger Begriff. Eine der Deutungen wurde hier schon gleich spontan erwähnt. Mit dem Linker aber hat die include-Datei überhaupt nichts zu tun. Denke daran, das #include eine Präprozessoranweisung ist. Sie wird beim compilieren durch den Inhalt der Datei ersezt. Dann erst wird übersetzt und irgendwannn später gelinkt. Der Linker hat also mit dem Mechanismus nichts zu tun. Die andere ist die Möglichkeit (und für die Arbeit mit einem Projekt relevant), die Datei im Projektbaum aufzuführen. Das hat lediglich den Zweck diese Datei einfach zum editieren zu erreichen. Auf die Tatsache, das die Datei beim compilieren an Stelle der #include-Anweisung eingefügt wird hat das folgende keinen Einfluss. (Ich kann hier nur von AVRStudio 4 berichten, aber in Version 5 wird es vermutlich ähnlich sein.) Unter View->Toolbars->AVR-GCC (vorausgesetzt Du arbeitest mit AVR-GCC) kannst Du ein Fenster aktivieren in dem sämtliche Dateien des Projektes, Deine eigenen, als auch die vom Compiler erzeugten aufgelistet sind. Die Dateien sind in einem Baum organisiert. Einer der Zweige heisst "Header Files". Mit einem Rechts-Klick auf diesem Zweig erscheint ein Kontextmenu in dem unter anderem "Add exisiting Header File(s)..." und "Create New Header File..." auszuwählen ist. (Das übersetze ich jetzt mal nicht). Dabei kann die inlucde-Datei eigentlich beliebig abgelegt werden. Es empfiehlt sich aber, einfach mal eine neue Datei anzulegen und den Inhalt der Datei, die Du schon geschrieben hast dort reinzukopieren. Dann guck im Projektordner wo die Datei tatsächlich gespeichert wird. Beachte aber bitte, was ich oben erwähnte. Diese Aktion wirkt sich ausschliesslich auf die Tatsache aus, das die Datei in diesem Baum angezeigt wird. Nicht darauf ob die Datei beim compilieren berücksichtigt wird. Demnach kann folgendes Problem auftauchen. Du hast die Datei in dem Baum hinzugefügt, aber der Compiler meldet, das ein Prototyp oder eine Typ nicht bekannt ist. Dann fehlt die entsprechende #include-Anweisung in einer oder mehrerer der C-Dateien. Oder Du hast zwar mit der #include-Anweisung eine Header-Datei eingefügt, aber Du kannst sie in dem Baum nicht sehen.
Am einfachsten legst du die Datei ins Projekt-Haptverzeichnis, dann brauchst du gar nichts weiter zu tun. Ansonsten musst du einen Include-Pfad in den Project-Settings auf das entsprechende Verzeichnis eintragen, oder den Pfad zur Datei in der #include-Anweisung mit hinschreiben. Dem Linker sind die include-Dateien allerdings herzlich egal. Oliver
O.K. Ich habe die include Datei jetzt im Menübaum unter Header Files drin (serial.h). Und sie ist jetzt auch im Projekt-Hauptverzeichnis zu sehen. Aber beim compelieren kommt der Fehler: ../Projekt0.c:11:40: error: ..\..\includes\LCD_display.h: No such file or directory
Fehlte noch eine Fehlermeldung Ich habe die include Datei jetzt im Menübaum unter Header Files drin (serial.h). Und sie ist jetzt auch im Projekt-Hauptverzeichnis zu sehen. Aber beim compelieren kommt der Fehler: ../Projekt0.c:11:40: error: ..\..\includes\LCD_display.h: No such file or directory ../Projekt0.c:12:35: error: ..\..\includes\serial.h: No such file or directory
bernd schrieb: > Ich habe die include Datei jetzt im Menübaum unter Header Files Wie ist die denn da reingekommen? Ich vermute mal unter "AVR GCC" rechte Maustaste auf "Header Files" und dann "Add Existing...". Damit machst du die Datei in der Menüstruktur sichtbar - mehr noch nicht. #include "header.h" reicht nicht. Du musst den ganzen Pfad angeben oder du machst dem Compiler den Pfad bekannt: >>Projekt >>Configuraton Options >>Include Directories Da trägst du den Pfad ein, in dem sich deine Headerdatei befindet. mfg.
Es sind hier drei Sachen zu beachten. 1. Die Pfadeinstellungen unter AVRStudio. 2. Die Pfadangabe in der #include-Anweisung. 3. Der tatsächliche Speicherort der Header-Datei. Deine Fehlermeldung sieht so aus, als wenn der Compiler die include-Datei in einem Ordner oberhalb des Projektordners erwartet. Das ist zulässig aber ungewöhnlich und durch die Defaults nicht abgedeckt. Die Frage ist nun: Liegt da die Datei? Anscheinend nicht. Du hast also entweder beim speichern was falsch gemacht oder der Angabe des Pfades in der include-Anweisung oder in den Projekteinstellungen sind falsch. Was hier für einen Anfänger etwas blöd ist: Es gibt mehr als einen Weg die Pfade einzustellen und anzugeben. Deswegen ist der günstigste Ausgangspunkt: 1. Speichere die include-Datei in dem Projektpfad in dem sich auch die C-Dateien befinden. (Eigentlich der Default). 2. Gib keine Pfade in der include-Anweisung an 3. Falls Dich das verwirrt: Gib keine Pfade in den Projekteinstellungen an. Eigentlich ist das egal. wenn Dich das nicht weiterbringt: Poste am besten mal die Pfadeinstellungen unter AVRStudio. Screenshot. Bildformate beachten. Poste am besten mal die Zeile mit der #include-Anweisung. Poste am bestem mal den kompletten Pfad auf die include-Datei. (Im Explorer in der Adresszeile zu sehen.
Thomas Eckmann schrieb: > #include "header.h" reicht nicht. Du musst den ganzen Pfad angeben oder > du machst dem Compiler den Pfad bekannt: Wenn die Include-Datei im gleichen Ordner wie die Projektdatei liegt, geht es ganz ohne irgendwelche Pfadangaben. Und eine relative Pfadangabe, wie #include "Includes\header.h" tut's natürlich auch.
Bitte bedenken das der GCC sehr wol zwischen Groß- und Kleinschreibung unterscheiden kann bei den Pfadangaben.
Dann geh mal von deinem Projektverzeichnis 2 Ebenen höher (denn genau das sagen die .. in den Pfadangaben aus: das Vaterverzeichnis) und von dort in das Unterverezcihnis "includes". Dort muss dann die Datei LCD_display.h liegen. #include "..\..\includes\LCD_display.h" da die Pfadangabe mit keinem \ beginnt und auch nicht mit einer Laufwerksangabe, ist es eine relative Angabe. Also ausgehend vom aktuellen Verzeichnis - deinem Projektverzeichnis. .. 1 Verzeichnisebene rauf ..\.. noch eine Verzeichnisebene höher ..\..\includes von dort in das Subverzeichnis "includes" ..\..\includes\LCD_dispkay.h und dort muss dann die Datei liegen Da der Compiler sie nicht findet, wird die Datei dort nicht sein. Also musst du den Pfad richtig stellen, so dass die Pfadangabe zu dieser Datei führt. (Und stell um Himmels willen deinen Explorer so um, dass er dir die Dateiendungen wieder anzeigt. Wird sind Entwickler, wir können mit Dateiendungen umgehen. Ganz im Gegenteil ... uns sagen die was und die sind wichtig)
Da "serial.h" im gleichen Verzeichnis wie die Projektdateien liegt, muß es im C-Quellcode einfach heißen #include "serial.h" Außerdem wird es eine serial.c geben. Und dann müßtest du noch klären, in welchem Verzeichnis deine LCD-Bibliothek liegt, also wahrscheinlich Dateien namens LCD_display.h und LCD_display.c
Wenn Du jetzt noch so nett wärst, zu beschreiben was falsch war, dann hat der Nächste auch noch was davon. :-)
Nicht wirklich. Das Problem ist, dass in Zeiten von Klickibunti die junge Generation mit ausgeschriebenen Pfadangaben nichts mehr anfangen kann. Für die sind Dinge wie ..\..\includes\serial.h genauso aussagekräftig, wie es für mich Chinesisch ist. Wer nie gelernt hat mit einer Command-Line umzugehen und damit im Verzeichnisbaum zu navigieren, dem sagt das nun mal nichts. Was früher jeder im kleinen Finger hatte, muss heute die IDE erledigen. Nur dass dem C-Compiler die IDE aber sowas von egal ist.
Verzeichnisbaum? Der PET hatte Verzeichnisbäume? ;-) Ach. Naja. Was noch dazu kommt, ist meiner Ansicht nach, dass so ein Compiler/IDE nun mal keine Kaffeemaschine ist, bei der das Versäumnis, das Manual zu lesen höchstens zu einem schönen heissen Toast führt.
Hallo Ich suche nen paar Include Dateien. Weiß jemand wo ich folgende Dateien für C runterladen kann ? fifo.h adc.h ars.h uart.h Ambesten mit Links den die Seiten die ich gefunden habe, haben keinen Download angeboten. Gruß Stephan
Die von Dir gesuchten Headerdateien bringen Dir nichts, da sie zu irgendwelcher Hardware gehören. Ohne zu wissen, um welche es geht, sind sie sinnlos. Das ist so, als würdest Du eine Zylinderkopfdichtung verlangen, ohne den Motor zu erwähnen, für den sie ist. Obendrein beschreiben die Headerdateien nur Funktionen etc., die wiederum in C-Dateien enthalten sind; wenn Du die nicht hast, hast Du im Prinzip nur die Originalverpackung einer Zylinderkopfdichtung.
Stephan Breuker schrieb: > Ambesten mit Links den die Seiten die ich gefunden habe, haben keinen > Download angeboten. Dann such nochmal. Hier kann man z.B. eine fifo.h runterladen: http://www.koders.com/cpp/fid4C34905F7D474969D073A57F234BEFF6CDE7761A.aspx?s=fifo
Rufus Τ. Firefly schrieb: > Das ist so, als würdest Du eine Zylinderkopfdichtung verlangen, ohne den > Motor zu erwähnen, für den sie ist. Oder mit anderen Worten. Diese Dateien findest du im Umfeld dessen, wo du den Source Code geholt hast, den du jetzt lauffähig machen willst.
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.