Mehrere c.Dateien einbinden

Gast #367541
Lesenswert?
• ▲
▼
Ein blutiger Anfänger möchte seinen C-Code in mehrere Dateien aufspalten
(main.c und lcd.c). Leider bekomme ich jedoch einige Fehlermeldungen.

Ich habe meine momentane Codestruktur angehängt. Folgenden Fragen sind
mir unklar:

*Reicht es die Datei lcd.c im Makefile anzugeben, oder muss sie auch im
main.c angegeben werden

*Kann ich in der lcd.c die Definitionen (Funktionen) von main.c
verwenden, oder muss ich die Definitionen (Funktionen) zusätzlich in
die LCD.c schreiben?


Wäre schön, wenn mir jemand die Struktur posten könnte, damit ich
versteh wie das funktioniert.

Danke vielamals für eure Bemühungen
Angehängte Dateien:
Gast #367542
Lesenswert?
• ▲
▼
Du brauchst noch eine main.h und lcd.h. In diesen Headerdateien
schreibst du alle Funktionen rein. z.B.:
void funktion(void);
In die *.c dann z.B.:
void funktion(void)
{
    return;
}

Jede *.c Datei bindet jede *.h datei ein in der Funktionen beschreiben
sind die benötigt werden.

WICHTIG:
KEINE *.c bindet eine andere *.c Datei ein.

Schaue dir am besten vorhandene Beispiele an.
Sobald du kapierst, dass der Linker dafür sorgt das du in die main.c
nicht die lcd.c includen darfst, dann hast du es kapiert.....
Gast #367543
Lesenswert?
• ▲
▼
>>*Reicht es die Datei lcd.c im Makefile anzugeben, oder muss sie auch
im main.c angegeben werden

Du musst schon beide angeben, damit auch beide kompiliert werden.
Zur Stuktur, wie Ulrich bereits schon erwähnte: In die C-Dateien packt
du die entsprechenden Funktionen rein. Jede C-Datei included ihre
eigene Header Datei wo IHRE Prototypen drin stehen. Zusätzlich kann
eine andere C-Datei diese header auch mit einbinden falls diese auf die
Funktionen Zugriff haben soll.
Beispiel:

main.c:
1
#include "main.h"
2
#include "stall.h"
3

4
int main()
5
  int mist;
6
  mist = gib_mist();
7
  printf("%d kg Mist",mist);
8
  
9
  return 0;
10
}
stall.c:
1
#include "stall.h"
2
#include "waage.h"
3

4
int gib_mist(){
5
  int vorhanden;
6
  vorhanden = wiege_mist();
7

8
  return vorhanden;
9
}
stall.h enhält in diesem Fall dann nur
1
int gib_mist();

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.