www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Die .c und .h Dateien richtig in meine Projekte einbinden


Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forumgemeinde,

ich habe eine Frage wie ich meine .c und .h Dateien richtig in meine 
Projekte einbinden kann. Ich brauche z.B. in einem neuen Projekt zum 
testen ein LCD. Ich habe aber mehrere LCD’s und somit auch 
unterschiedliche .c und .h Dateien zur Verfügung. Da gibt z.B. die 
"hd44780" .c und .h Datei, oder die "T6963C" .c und .h Datei.
Ich habe auf meiner Festplatte folgende Ordnerstruktur:



…[WINAVR]
         [My_includes]
                      [lcd]
                           Lcd.h
                           [hd44780]
                                    hd44780.c
                                    hd44780.h
                           [t6963c]
                                    t6963c.c
                                    t6963c.h
                           …
         [Projekte]
                      [Projekt1]
                      [Projekt2]
       …

Wenn ich jetzt ein neues Projekt anfange, dann wäre es super wenn ich 
einfach nur noch die "lcd.h" in das Projekt einbinde. Dort habe ich dann 
über:

#if defined(HD44780)
#include <lcd\hd44780\hd44780.h>
…

Die unterschiedlichen .c und .h Dateien eingebunden.
So wie ich mir das aber vorgestellt habe, geht es nicht da ich in dem 
neuen Projekt dann noch die "hd44780.c" Datei mit einbinden muss. Es ist 
mir schon klar, dass der Compiler diese Datei braucht aber wenn ich 
diese Datei einbinden muss dann kann ich auch gleich die .h Datei 
einbinden und mir das ganze mit der globalen "lcd.h" sparen.
Was mir noch eingefallen ist, man könnte eine einzige "lcd.c" und 
"lcd.h" Datei erstellen und dann dort für jede Funktion über "#ifdef…" 
abfragen welchen Quellcode ich möchte aber so ist das alles andere als 
übersichtlich. Das will ich sicherlich nicht.

Ich hoffe Ihr hier im Forum wisst was ich meine… Ich würde gerne 
irgendwo eine Definition machen und dann wird automatisch die richtige 
.c und .h Datei "compeliert"

Ich hoffe ihr könnt mir weiterhelfen…

Viele Grüße,
Marcel

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel K. schrieb:

> Was mir noch eingefallen ist, man könnte eine einzige "lcd.c" und
> "lcd.h" Datei erstellen und dann dort für jede Funktion über "#ifdef…"
> abfragen welchen Quellcode ich möchte

Genau so würde ich das machen.
Zumindest war das mein erster Gedanke, als ich angefangen habe dein 
Problem zu lesen.

> so ist das alles andere als
> übersichtlich.

Ja, aber nur im lcd.c
Derjenige der die lcd.c benutzt, hat damit ja nichts zu tun. Von daher 
wäre es vertretbar. Im Zweifelsfall ist immer die einfache Verwendung im 
Vordergrund.

Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl heinz. Du bist einer von denen die ja richtig viel Ahnung 
haben. Wie machst du denn das?? Wie bindest du z.B. ein Display in ein 
neues Projekt ein? Kopierst du dir die "aktuelle" .c und .h Datei vom 
letzten Projekt und bindest sie dann dort ein oder hast du einen 
"globalen"- Platz wo die Datei gespeichert ist und bindest sie über 
diesen Pfad ein??

Grüße, Marcel

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel K. schrieb:

> "globalen"- Platz wo die Datei gespeichert ist und bindest sie über
> diesen Pfad ein??

Über den Pfad.
Allerdings habe ich immer denselben Typ von LCD :-)

Aber wenn ich mehrere hätte, würde ich das mittels #ifdef und #include 
lösen. Auch beim lcd.c

Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm, das ist echt ne schwere Entscheidung!!
Ich habe z.B. auch das EA_DIP204 im SPI-Mode. Wenn ich dieses Display 
auch noch mit einbinden möchte dann explodiert die Übersichtlichkeit!
Ich denke es ist dann echt besser wenn ich jedes Display über den Pfad 
einbinde und es nicht über eine globale .h Datei mache!
Außerdem, wenn ich jemanden meinen Quellcode z.B. zum T6963C schicken 
will dann müsste ich den ganzen Rest mit schicken. Das ist nicht so 
toll!! :o(

Naja ich sage mal Danke für deine Hilfe...

Viele Grüße,
marcel

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.