Forum: Mikrocontroller und Digitale Elektronik Variablendeklaration µVision3


von Klawatsch (Gast)


Lesenswert?

Hallo

Ich versuche mich mit µVision3 vertraut zu machen, aber ich schaffe es 
nicht eine Variable in einer *.h Datei zu deklarieren und diese in einer 
oder mehreren *.c Dateien zu verwenden. Kann mir bitte jemand helfen. 
Danke.

von R. W. (quakeman)


Lesenswert?

Also ich habe es bisher immer so gemacht, dass ich eine globale 
Variable, auf welche von unterschiedlichen c Dateien zugegriffen werden 
soll, immer in einer c Datei deklariere und dann per h-file allen 
anderen bekannt mache.

Meine Variante sieht so aus:

1. C Datei (1.c)
1
#include <1.h>
2
3
unsigned int global_var_xyz;
4
...

1. Header Datei (1.h)
1
#ifndef EINS_H
2
  #define EINS_H    //H-File Bezeichner
3
  extern unsigned int global_var_xyz;
4
#endif

Nun kannst du in jeder C Datei die Header Datei 1.h per #include 
einbinden und auf die Variable "global_var_xyz" zugreifen. Vieleicht 
kannst du die Zeile "unsigned int global_var_xyz;" auch in die Header 
Datei auslagern, aber das musst du selber testen. Das #ifndef ist dafür 
da, damit die "extern" Bekanntmachung nicht bei jedem erneuten Einbinden 
der Header Datei erzeugt wird (sonst gibt es Fehlermeldungen beim 
Compilieren).
So wie ich es geschrieben habe funktioniert es bei mir zuverlässig.

Ciao,
     Rainer

von B e r n d W. (smiley46)


Lesenswert?

#include "1.h"

von R. W. (quakeman)


Lesenswert?

B e r n d W. schrieb:
> #include "1.h"

Ich benutze bei µVision immer <> und keine "". Hatte noch nie Probleme 
damit. :)

von R. W. (quakeman)


Lesenswert?

Ich habe eben mal etwas nachgelesen, was genau der Unterschied zwischen 
<> und "" ist. Und hier ist der Abschnitt in der Doku diesbezüglich:
1
For #include "filename.h" the Compiler searches first the current
2
folder and then folder of the source file. When this fails or when #include
3
<filename.h> is used, the paths specified in the include paths box are
4
searched. When this still fails, the paths specified in for the INC folder
5
under Project - Components, Environment, Books ... are used.

Also ich denke, das es in den meisten Fällen keinen Unterschied macht, 
was man nun verwendet. ;)

Ciao,
     Rainer

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.