Forum: Compiler & IDEs *.h Dateien - Wie sinnvoll nutzen ?


von Jogibär (Gast)


Lesenswert?

Hallo,

bisher benutze ich keine Headerdateien.

Meine C Bücher schweigen sich allerdings darüber aus, was man
sinnvollerweise hineinschreibt.

So wie ich bisher gelesen habe, sollten dort Definitionen, globale
Variablen
... definiert werden.

Was schreibt Ihr so alles rein ?
Ich möchte Sie möglichst als zentrale Konfigurationsdatei für die
entsprechende
*.c Funktion benutzen, um diese einfach für ein anderes Programm
nutzbar
zu machen, damit man nicht die ganze Funktion durchforsten muß, um z.B
die
Portadressen zu ändern.

Gibt es irgend ein Standard oder eine Richtlinie ?

Jogibär

von Fiffi (Gast)


Lesenswert?

Hallo Jogibär,

>bisher benutze ich keine Headerdateien.

Teilst du denn deinen Code im mehrere Dateien auf ?


Ich benenne die C-Datei die main() enthält nach dem Projekt.
Globale Variablen und Definitionen in "global.h".

Die einzelnen Programmteile bekommen je eine C- und eine Header-Datei.

Beispiel:

projekt.c
global.h
sram.h
sram.c
i2c.c
i2c.h
...


Gruß

Fiffi

von Jogibär (Gast)


Lesenswert?

Hallo,

ich benutze komischerweise auch projekt.c als Hauptdatei für main.

Normalerweise lege ich Konfigurationen für die einzelnen Funktionen
in projekt.c fest.
Auf die Dauer wird das etwas unübersichtlich.
Deshalb würde ich die Definitionen für die einzelnen Funktionen gerne
in der jeweiligen *.h Datei festlegen.
Normalerweise kann ich ja machen was ich will, aber ich versuche
möglichst
den allgemeinen Standard einzuhalten.

Deshalb meine Frage, ob es da irgendeinen gibt, bzw. was man so
standardmäßig
in die *.h Dateien reinschreibt.

Jogibäa

von Fiffi (Gast)


Lesenswert?

Hallo Jogibär,

>Normalerweise kann ich ja machen was ich will, aber ich versuche
>möglichst den allgemeinen Standard einzuhalten.

IMHO gibt es keinen Standard.

>Deshalb meine Frage, ob es da irgendeinen gibt, bzw. was man so
>standardmäßig in die *.h Dateien reinschreibt.

Beispiel:

Datei "i2c.h":
  extern unsigned char test_var;

  void i2c_init(void);
  void i2c_send(unsigned char data, unsigned char adr);

Datei "i2c.c":
  #include "i2c.h"
  unsigned char test_var;

  void i2c_init(void)
  {
  ...
  }

  void i2c_send(unsigned char data, unsigned char adr)
  {
  ...
  }



Gruß

Fiffi

von Jogibär (Gast)


Lesenswert?

Hallo,

interessant, daß sich um diese Zeit noch welche mit dem
Programmieren beschäftigen .
Ich bin anscheinend nicht der einzige, der ein wenig verrückt ist.

Also,

so ähnlich wie bei Dir habe ich es mir auch schon gedacht.
Wenn es kein allgemein akzeptierten Standard gibt, dann werde ich es
einfach
nach gusto machen.

Eine andere Frage,

Du gibst in der Headerdatei den Funktionprototypen an.
Das mache ich normalerweise nur, wenn der AVR-GCC mault.
Hat man irgendwelche Vorteile, wenn man es normalerweise immer tut ??

Jogibär

von Fiffi (Gast)


Lesenswert?

Hallo Jogibär,

>interessant, daß sich um diese Zeit noch welche mit dem
>Programmieren beschäftigen .

Ich zähle mich zu den Nachtmenschen ...


>Du gibst in der Headerdatei den Funktionprototypen an.
Ja, du musst Du Dich nicht um die Reihenfolge der Funktionen kümmern.
Und Du musst die Funktionen deklarieren, wenn Du sie in anderen
Quellcode Dateien verwenden möchtest.

Beispiel, daß ohne vorherige Deklarationnicht funktioniert:

void Funktion_1(void)
{
  ...
  Funktion_2();
  ...
}

void Funktion_2(void)
{
  ...
}


Gruß

Fiffi

von Jogibär (Gast)


Lesenswert?

Achso,

ich deklariere normalerweise keine Funktionen in projekt.c.
Sowas lege ich immer in externe Dateien, dadurch kann ich die einmal
geschriebenen Funktionen immer gut wiederverwenden.
Diese Funktionen binde ich dann ganz am Anfang der projekt.c mit
include ein.

Deshalb habe ich bisher keine Probleme gehabt.

Nachts bin ich auch immer sehr produktiv,
hat allerding den Nachteil, daß Mittag immer zum Frühstück mutiert.


Jogibär

von Fiffi (Gast)


Lesenswert?

Hallo Jogibär,

>Nachts bin ich auch immer sehr produktiv,
>hat allerding den Nachteil, daß Mittag immer zum Frühstück mutiert.

Das kenn ich auch ...


Gruß

Fiffi

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.