www.mikrocontroller.net

Forum: Compiler & IDEs C Programmstruktur / Aufbau


Autor: technikus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin absoluter Einsteiger in der C-Programmierung. Das Tutorial habe 
ich fast durch.
Was ich absolut nicht verstehe:
Schildern wir es am Beispiel von der LCD-Ansteuerung im Tutorial.
Hier steht etwas von der Datei "lcd-routines.h" und "lcd-routines.c".
Dazu fehlt mir der Zusammenhang. Oder anders ausgedrückt, wie binde ich 
diese Dateien ein? Was ist eine *.h Datei und wie kann ich mir den 
Zusammenhang erklären? Egal wo ich nach Infos suche, in allen C 
Tutorials die ich gefunden habe wird auf so etwas nicht eingegangen.
Vielleicht stelle ich mich aber als ehemaliger Bascom Benutzer viel zu 
blöd an :-(

Ich wäre um jede Hilfe dankbar.

Schönes WE !

Gruß
Technikus

Autor: technikus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso: Ich nutze AVR Studio mit WinAVR.

Autor: Alex Merkle (t4nk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

in C brauchst du z.B sogenannte Prototypen! Zum Beispiel:

Hauptprogramm:

int main(){
  //Unterprogrammaufruf <- das ist ein Kommentar!
  test();

  return 0;
}

void test(){
  //....
}

Beim Compilieren sieht der Compiler die Fkt test, weiß aber noch nicht 
das es sie gibt, deshalb musst du ihm vorher sagen dass es sie gibt!!!!
Prototyp:

void test();

Diesen schreibst du vor main (vor die Funktion in der test bekannt sein 
muss)  oder in eine .h datei und bindest diese mit #include 
"dateiname.h" ein.

INCLUDE bewirkt dass alles was in der einbindenden Datei steht einfach 
eingefügt wird, so kennt jetzt der Compiler alle Funktionsprototypen und 
kann auch prüfen ob du sie richtig aufrufst.

Da gibt es noch viel mehr sachen die man in eine Header-Datei schreiben 
kann, schau dir einfach mal eine an.

mfg Alex

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

Bewertung
0 lesenswert
nicht lesenswert
technikus wrote:
> Achso: Ich nutze AVR Studio mit WinAVR.

http://www.mikrocontroller.net/articles/FAQ#Ich_ha...

Autor: technikus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kar heinz: Danke, den Link kannte ich nicht.

@Alex: Mal angenommen ich habe einen Quelltext für taster.h und einen 
für taster.c
Im Avr Studio gehe ich mit rechts Klick auf Source Files und wähle 
create new source file. Den File nenne ich dann taster.c und füge den 
Quelltext ein.
Wohin jetzt mit dem taster.h File?

Also eine *.h Datei ist eine header Datei. Organisiert diese quasi die 
dazugehörige *.c Datei?

DANKE für die Infos!

Gruß
technikus

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

Bewertung
0 lesenswert
nicht lesenswert
technikus wrote:
> @Kar heinz: Danke, den Link kannte ich nicht.
>
> @Alex: Mal angenommen ich habe einen Quelltext für taster.h und einen
> für taster.c
> Im Avr Studio gehe ich mit rechts Klick auf Source Files und wähle
> create new source file.

Nicht create. Add.
Du hast doch das File schon. Alles was du tun musst ist,
dem AVR Studio mitzuteilen, dass es auch noch zu diesem
Projekt mit dazugehört. Das ist dann schon alles.

 Den File nenne ich dann taster.c und füge den
> Quelltext ein.
> Wohin jetzt mit dem taster.h File?

Das taster.h File hast du im besten Fall am gleichen Verzeichnis
auf dem auch taster.c ist. Das muss im übrigen nicht das Verzeichnis
sein, auf dem deine Entwicklung stattfindet. Ich habe ein
Verzeichnis, in dem ich einige Hilfsfunktionalitäten als
C Code in mehreren Files organisiert habe. Das Verzeichnis
heist bei mir 'Common' um anzudeuten, dass es sich hier um
Funktionalitäten handelt, die von mehreren Projekten quasi
gemeinschaftlich benutzt werden kann.
Je nachdem was ich davon in einem Projekt brauche, werden dann
die entsprechenden Files (jeweils *.c und *.h) zum Projekt
hinzugefügt. Hinzugefügt, also 'Add existing file'.

> Also eine *.h Datei ist eine header Datei. Organisiert diese quasi die
> dazugehörige *.c Datei?

Ich weis nicht was du damit meinst.
In einem Header File ist alles enthalten, was einen Benutzer
der Funktionalität im *.c File interessiert. Dort sind die
Protoypen der Funktionen, die relevanten Datenstrukturen, Konstanten-
definitionen etc.

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.