Einbinden von Dateien in C. Verständnisproblem.

Gast #4035349
Lesenswert?
• ▲
▼
Hallo,

ich habe ein grundsätzliches Verständnisproblem, was die Einbindung von 
Dateien in C angeht. Normalerweise ist es so, dass eine Headerdatei 
eingebunden wird mit z.B.:
#include "funktionen.h".
Neben dieser Datei "funktionen.h", in welcher üblicherweise u.a. 
Funktionen deklariert sind, existiert dann noch eine Datei 
"funktionen.c", in welcher die jeweiligen Funktionen implementiert sind 
und die Datei "funktionen.h" ebenfalls includiert wird. Ich verstehe 
aber jetzt nicht ganz, woher der Compiler weiß, dass die Datei 
"funktionen.c" existiert und benutzt wird. Ich kann nirgends eine 
Einbindung der Datei "funktionen.c" finden.
#4035364
Lesenswert?
• ▲
▼
Programmieranfängeranwärter schrieb:
> Ich verstehe
> aber jetzt nicht ganz, woher der Compiler weiß, dass die Datei
> "funktionen.c" existiert und benutzt wird. Ich kann nirgends eine
> Einbindung der Datei "funktionen.c" finden.

Dem Compiler ist es auch völlig wurscht, ob die c-Datei existiert ;-)
Er interessiert sich nur dafür wie eine Funktion in einer (anderen) 
Quell-Datei aufgerufen werden muss und das steht im Header.

Der Linker hat dann möglicherweise ein Problem, wenn er im nächsten 
Schritt die aus den einzelnen Quelldateien (c-Dateien) eines Projektes 
die vom Compiler erstellten Object-Dateien zu einem Programm zusammen 
basteln muss und eine benötigte Funktion in keiner der Objekt-Datei 
enthalten ist.
#4035366
Lesenswert?
• ▲
▼
Im wesentlichen gibt es zwei Schritte:
- Compilieren
- Linken

- Compilieren:

Du sagst dem Compiler, er soll funktionen.c compilieren. Daraus wird 
dann eine functionen.o Datei erstellt, die Daten für die spätere 
Hex-Datei oder BinärDatei enthält.
Sofern alle notwendigen Headerdateien in der funktionen.c Datei 
angegeben sind, wird das Compilieren erfolgreich sein.

Hast du noch eine Datei, funktionen_2.c, dann sagst du dem Compiler, er 
soll auch diese compilieren. Und so weiter. Wenn du alle C-Files 
kompiliert hast:

- Linken:

Du sagst dem Linker, er soll aus funktionen.o + funktionen_2.o und allen 
anderen *.o zusammen eine Hexdatei/Binärdatei für z.B. Atmega xxx 
erstellen.

Fertig.

Das Ganze kannst du "händisch" machen, oder mit einer 
Programmierumgebung.

Soweit das Prinzip.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.