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.)
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.