www.mikrocontroller.net

Forum: Compiler & IDEs Mehrere c.Dateien einbinden


Autor: Christian (Gast)
Datum:
Angehängte Dateien:

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

Autor: Ulrich (Gast)
Datum:

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

Autor: MasterFX (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
#include "main.h"
#include "stall.h"

int main()
  int mist;
  mist = gib_mist();
  printf("%d kg Mist",mist);
  
  return 0;
}
stall.c:
#include "stall.h"
#include "waage.h"

int gib_mist(){
  int vorhanden;
  vorhanden = wiege_mist();

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

Autor: Christian (Gast)
Datum:

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

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.