www.mikrocontroller.net

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


Autor: Fragender (Gast)
Datum:

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

Autor: Ulrich (Gast)
Datum:

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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

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

Autor: Simon K. (simon) Benutzerseite
Datum:

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

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.