Forum: Compiler & IDEs Headerdateien


von Hans (Gast)


Lesenswert?

Hallo

Ich habe gerade versucht Funktionen in Headerdateien auszulagern.
Wie macht ihr die Wertübergabe.
Nach meines Wissens ersetzt der Comp. den Befehl 'inclu.... durch den
Inhalt des headerdatei.
Liege ich richtig, oder habe ich etwas verdreht.
Dann könnte ich alse die global Variablen in der Headerdatei anlegen.
Gibt es etwas grundlegendes, wenn ich "Sachen" auslagern möchte.

von The Daz (Gast)


Lesenswert?

Hans,
in header Dateien packt man nur die interfaces anderer Komponenten.
Also nicht ganze Funktionen sondern nur deren Prototyp. Der
pre-processor ersetzt vor dem kompilieren das include statement durch
den Inhalt der entsprechenden Datei. Vermeide globale Variablen wo du
nur kannst um deine code Struktur sauber zu halten (information
hiding). Auslagern von Funktionalitaet macht man mir libraries, nicht
header files.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

> Vermeide globale Variablen wo du nur kannst um deine code Struktur
> sauber zu halten (information hiding).

So spricht der Informatiker.

Der langjährige Embedded-Programmierer wird (auf Grund der möglichen
Ressourceneinsparung) diese Aussage oft, sehr oft relativieren...  Für
das "information hiding" kann er sich nämlich sowieso nix kaufen,
seine Software ist ein abgeschlossenes Ganzes, das er nur selbst
benutzt und sonst niemand.  Für die eingesparten Ressourcen kann er
sich u. U. aber einiges kaufen (indem man z. B. im fertigen Projekt
dann mit dem nächstkleineren Prozessor auskommt).

von Karl H. (kbuchegg)


Lesenswert?


von Hans (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Ich habe gerade ein Problem mit der Deklaration von einer
String-Varible.
Wenn ich es so wie im Anhang machen funkt es.
Wenn ich aber in der Headerdatei die Varable einen Wert zuteilen möchte
weigert er sich.
Warscheinlich ist der Grund, das der Befehl in einer Funktion stehen
muß z.B. main().
Gibt es eine möglichkeit das ich den Startwert schon vorher geben
kann.
Auch das mit
char temp["Hallo"];
haut nicht hin.

Gruß

von Karl heinz B. (heinzi)


Lesenswert?

Im Header Menue.h
******************


extern char Temp_Char00[9];  /* Deklaration, wenn du hier eine
                              * Initialisierung angibst, wird aus
                              * der Dekleration eine Definition, auch
                              * wenn das ganze 'extern' ist (extern
                              * wird in so einem Fall dan ignoriert
                             */

in main.c
*********

#include "Menue.h"

char Temp_Char00[9] = "Hallo";

int main()
{
  ...
}

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.