Forum: Mikrocontroller und Digitale Elektronik warning: defined but not used


von ein Jemand (Gast)


Lesenswert?

Moinmoin,

bei mir tritt die folgende Warnung auf: VARIABLENNAME defined but not 
used, die ich gerne wegbekommen möchte.

in der test.h habe ich static uint8_t VARIABLENNAME definiert,
in der test.c wird diese Variable verändert, aber ebenso in einer 
anderen test2.c Datei.
Nun schmeißt mir der compiler die (nicht ganz richtige) Warnung defined 
but not used raus.
Wenn ich die Variable jedoch in der test.c deklariere, wird sie in der 
test2.c nicht gefunden.

Wie kann ich die Warnung loswerden? (funktionieren tut es auch so, aber 
ein warnungsfreies kompilieren wär mir lieber, da ich das projekt auch 
abgeben möchte.)

von der mechatroniker (Gast)


Lesenswert?

Globale Variablen immer in einer C-Datei, nie in einer H-Datei 
definieren. Soll sie global sein, laß das static weg und definier sie in 
der anderen C-Datei als extern.

Die Definition in einer H-Datei als static bewirkt, daß jede C-Datei, 
die dieses Headerfile einbindet, ihre eigene (!) Variable mit dem Namen 
bekommt. Warum dein Programm funktioniert hat: Keine Ahnung. Glück?

von ARM-Fan (Gast)


Lesenswert?

Du DEFINIERST die Variable in einer .c Datei.
Im Header wird sie als Referenz zur Benutzung in anderen .c Modulen
hingegen DEKLARIERT.

Das STATIC hat hier nichts verloren, wenn du die Variable in
mehr als einem Modul verwenden willst.

von ARM-Fan (Gast)


Lesenswert?

Mist, zu langsam... ;-)

test.c:
1
int variable1;
2
void foo()
3
{
4
  variable1--;
5
}
test.h:
1
extern int variable1;
test2.c:
1
#include "test.h"
2
void bar()
3
{
4
  variable1++;
5
}

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.