Forum: Mikrocontroller und Digitale Elektronik Globale Variablen in MPLABX


von Philipp R. (philippr)


Lesenswert?

Hallo,

ich verzweifle gerade ein wenig bei MPLABx mit globalen Variablen bzw. 
mit globalen Variablen, die einen selbstdefinierten Typ aufweisen.

Als Bsp:

Mein Projekt besteht aus main.c und dann noch zusätzlich aus dummy.c und 
dummy.h
In dummy.h habe ich den Typ definiert:
1
//dummy Typedef
2
typedef struct
3
{
4
bool a;
5
bool b;
6
uint8_t c;
7
}dummy_t;
8
9
extern dummy_t dummy; //dummy global

In dummy.c habe ich dann die Variable deklariert:
1
dummy_t dummy;

Nun möchte ich auf die Variable Dummy in main.c zugreifen. In dieser ist 
dummy.h eingebunden.
1
#include "dummy.h"
2
.
3
.
4
.
5
int main(int argc, char** argv) {
6
.
7
.
8
.
9
dummy.c = 25;
10
.
11
.
12
.
13
}

Während ich den Programmcode schreibe, wird mir die Variable dummy in 
main.c sogar von MPLABX vorgeschlagen (Ctrl + Leertaste). Sobald ich 
jedoch builde, spuckt mir der Compiler für main.c eine Fehlermeldung für 
jede Zeile, in der ich auf dummy zugreife, aus:

error: (192) undefined identifier "dummy"
error: (196) struct/union required

Von Keil uVision bin ich es gewohnt, Variablen nach diesem Prinzp nutzen 
zu können. Da gibt es keine Probleme.
Weiß jemand wo das Problem bei  MPLABX liegt?

Ich programmiere übrigens einen PIC16F1825. Als Compiler nutze ich den 
XC8.

Vielen Dank schonmal für die Hilfe.

Gruß Philipp

von Michael S. (rbs_phoenix)


Lesenswert?

Geht es denn, wenn du den Inhalt der Header-Datei direkt ins c-File 
schreibst?

Sollte ja so eigentlich gehen. Die frage ist ja, macht er mucken bei der 
*.h oder *.c

: Bearbeitet durch User
von Philipp R. (philippr)


Lesenswert?

Ich habe es zum Laufen bekommen. Eigentlich war alles richtig.
Jedoch hatte ich ein meinem Quellcode vorher noch für Testzwecke ein 
Struct definiert, das dummerweise den gleichen Namen, wie das typedef 
hat. Wie es die Schusselei so will, habe ich natürlich vergessen das 
Struct wieder zu löschen und dadurch kam es zu einem Namenkonflikt. 
Jetzt klappt alles.

Danke dennoch für die Hilfe.

von Michael S. (rbs_phoenix)


Lesenswert?

Ist doch "immer" so ;)

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.