Tag, die Herren und evtl. Damen! Kurze Fräge: Winavr, Routinen für Ansteuerungen e. Peripherie geschrieben, sollen aus hauptprogramm aufgerufen werden, also include nötig. Im Moment liegt der Quelltext der Funktionen in einer Datei subroutines.c. Sollte es dann im Hauptprogramm besser #include "subroutines.c" heissen, oder #include "subroutines.h" ? Kann ich in einer .h eigentlich Quelltext unterbringen oder gehen da nur Funktionsdeklarationen und defs? Macht das Compilier- oder Speichertechnisch (.hex-grösse) einen Unterschied? Grüsse, Marque
Es heißt #include subroutines.h. Dem Linker musst du nun noch die C Datei mitteilen. das machst du, wenn du das Makefile benutzt mit SRC += subroutines.c
Machen kann man das, wie man will. #include fügt schließlich nur die inkludierte Datei genau an dieser stelle ein. Aber bewährter, robuster, und üblicher Stil ist es, Quellcode NIEMALS per include in andere Dateien einzubinden. Quellcode gehört in .c-Dateien. Zu jeder .c-Datei sollte es eine .h-Datei geben, die die nach aussen sichtbaren Definitionen enthält. (Also defines, Funktionsprototypen, externe globale Variablen usw.). Nur diese .h-Dateien werden in andere .c-Dateien includiert. Alle .c-Dateien werden im makefile aufgelistet. Der linker baut die dann zusammen. Dafür ist der da. Oliver
Danke! Ich geh mal davon aus, dass die sub.c und sub.h dann auch im gleichen verzeichnis wie die main.c liegen muss. Wo im makefile definiere ich denn eigentlich die zu linkenden subs?
Marc wrote: > Danke! > Ich geh mal davon aus, dass die sub.c und sub.h dann auch im gleichen > verzeichnis wie die main.c liegen muss. Keineswegs. In einem #include kann man sehr wohl auch Pfadangaben machen. Und beim linken gibt man ebenfalls den Pfad zum Object File an.
>Wo im makefile definiere ich >denn eigentlich die zu linkenden subs? Im makefile gibt es die Zeile # List C source files here. (C dependencies are automatically generated.) SRC = $(TARGET).c hinter $(TARGET).c kannst du die weiteren source-files anhängen. Am einfachsten nimmst du mfile (befindet sich im Startmenu unter WinAVR) zur Erstellung des makefiles. Danach kannst du dir dann im makefile ansehen, wie das aussieht. Oliver
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.