Einbinden von anderen *.c Dateien in C

Gast #555795
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...
Gast #555812
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.
Persönliche Seite #555814
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
Persönliche Seite #556382
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren