Forum: Compiler & IDEs Mehrere c.Dateien einbinden


von Christian (Gast)


Angehängte Dateien:

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

von Ulrich (Gast)


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.....

von MasterFX (Gast)


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();

von Christian (Gast)


Lesenswert?

Danke für die schnellen Antworten, jetzt ist es schon um einiges klarer
und funktioniert tadellos ;-)

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.