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
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.....
>>*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(); |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.