Variablen in einer Header Datei deklarieren

Gast #574602
Hallo zusammen.
Ich bin relativ neu dabei mit Controllern zu experimentieren. Nun habe 
ich die ein oder andere Sache schon programmiert und meine Apps werden 
größer.
Da ich aus Gründen der Übersichtlichkeit mehrere Source Code Files habe, 
aber in mehreren Files die selbern Variablen benötige hatte ich überlegt 
diese in einer Header Datei zu deklarieren und dieselbe überall 
einzubinden. Der Grund zu meiner Überlegung ist der das mir die 
Übersicht und die Lust abhanden kommt immer in mehreren Files Variablen 
als extern zu deklarieren.
Danke für Hilfestellungen und Anregungen!
Mfg Thomas
Gast
Und ? wo ist da jetzt die Frage?

/Glaskugel on
Nehme mal an Du hast das gemacht, und bekommst vom Linker jede Menge 
Fehler...
/Glaskugel off

Mein vorschlag, ein "Globale" Haeder Datei nehmen die überall 
eingebunden wird (im Header der jeweiligen Datei), welche die Datei über 
extern(dafür ist das ja da) bekannt macht. Und an einer (sinnvollen) 
Stelle wird dann die Variable tatsächlich deklariert. Natürlich in einem 
c File. Variablendeklaration hat in einer Header Datei nix zu suchen...
Du könntest das z.B. so lösen:

global.h:
extern uint8_t GlobalVar;

global.c:
uint8_t GlobalVar;

modul_x.c:
#include "global.h"

void myFunc1(void){
  GlobalVar=5;
}

modul_y.c:
#include "global.h"

void myFunc2(void){
  if(GlobalVar>4)
    PORTB=255;
}

Ansich sollte natürlich versucht werden, die Module so "gekapselt" wie 
möglich zu gestalten und die Verwendung programmglobaler Variablen zu 
minimieren.

Gruß Frank
Gast
Eine andere Möglichkeit wäre es, die Variablen als extern zu 
deklarieren.
Bei meinem Projekt wird z.B. eine Struktur vom Typ config in der Datei 
config.c deklariert. In allen anderen c-Dateinen, die diese Struktur 
benutzen, steht oben

extern configuration config;  // import global variable from main file

Der Linker löst das dann auf.

Johannes

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.