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

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