Headerdateien

Gast #284000
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.
Gast #284001
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.
Moderator Persönliche Seite #284002
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).
Gast #284004
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ß
Angehängte Dateien:
#284005
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()
{
  ...
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.