www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik include? .h oder .c?


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Robert S. (razer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.