Forum: PC-Programmierung Einbinden von anderen *.c Dateien in C


von Fragender (Gast)


Lesenswert?

Hallo

Ich möchte eine lcd.c Datei schreiben die Funktionen enthält die von 
meiner main.c verwendet werden.

Ich habe das jetzt gelöst, indem ich eine lcd.h Datei geschrieben habe 
die die Prototypen der lcd.c enthält

Also so:

**********main.c**********
#include "lcd.h"
...

void main(void)
{
    lcd_init();
}

**********lcd.h**********
extern void lcd_init(void);

**********lcd.c**********
void lcd_init(void)
{
blablabla
}

Der Compiler scheint das so zu akzeptieren, aber ist das so auch 
"Normgerecht"? Mich wundert das ich nirgendwo
#include "lcd.c" eingeben muß.

Wie muß ich das machen wenn ich auch noch in lcd.c die delay Funktion 
aus main.c verwenden möchte? Brauche ich dann eine zweite Header Datei?

Hab schon in meinem C Buch im Netz gesucht. Aber irgendwie verstehe ich 
die Ausführungen da nicht...

von Ulrich (Gast)


Lesenswert?

du könntest dir noch eine main.h basteln und die dann in der lcd.c 
includen.

Eigentlich ist es gar nicht so schwer wenn man das Prinzip verstanden 
hat.

Dein Projekt wird in 3. Schritten "compiliert"

Als erstes wird die main.c zu einer main.o. Völlig unabhänig was in der 
lcd.c drinnensteht.
Dann wird die lcd.c zu einer lcd.o. Völlig unabhänig was in der main.c 
drinnensteht.
Als letztes kommt der Linker und wandelt die "Namen" in 
"Speicherstellen" um.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, ein #include *.c gehört sich nicht.

C-Compiler übersetzen C-Dateien als getrennte Module ("compilation 
units"), diese werden vom Linker zusammengefasst (dabei werden externe 
Referenzen, also Zugriffe auf Objekte in anderen Modulen oder Libraries 
aufgelöst) um das fertige Programm zu bilden.

Literaturhinweis: Kernighan & Ritchie, "Programmieren in C", zweite 
Auflage, Hanser-Verlag

von Simon K. (simon) Benutzerseite


Lesenswert?

Rufus t. Firefly wrote:
> Nein, ein #include *.c gehört sich nicht.
>
> C-Compiler übersetzen C-Dateien als getrennte Module ("compilation
> units"), diese werden vom Linker zusammengefasst (dabei werden externe
> Referenzen, also Zugriffe auf Objekte in anderen Modulen oder Libraries
> aufgelöst) um das fertige Programm zu bilden.
>
> Literaturhinweis: Kernighan & Ritchie, "Programmieren in C", zweite
> Auflage, Hanser-Verlag

Empfehle ich auch.

Btw: Ein Include holt nur den Inhalt aus der Datei und ersetzt ihn an 
der Stelle, wo das #include steht. Natürlich ist es somit auch möglich, 
.c Dateien zu inkludieren, aber, das ist wie schon gesagt, nicht Praxis.

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
Noch kein Account? Hier anmelden.