www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variablen in einer Header Datei deklarieren


Autor: C Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: PM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Frank N. (betafrank)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Tobias Korrmann (kurzschluss81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Genau was hier beschrieben wurde habe ich gemacht.
Trotzdem meckert mein Linker rum, das er die von mir verwendete Variable 
nicht findet.
Ich verwende den aktuellen IAR MSP430 Compiler

Autor: Tobias Korrmann (kurzschluss81)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Frage hat sich erledigt. Hab den Fehler gefunden.

Autor: Johannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.