Hallo da draußen, mein gcc meldet beim Compilieren: ../../main.h:23: warning: 'sw_version' defined but not used Die Variable ist in main.h als Array definiert: static uint8_t sw_version[] = "0.9" ; Ich verwende die Variable sw_version aber folgendermaßen: ... printf("SW-Version: ") ; printf(" %s ", sw_version ) ; printf(" compiled " __DATE__" " _TIME_ "\r\n") ; Das Programm läuft einwandfrei, aber da muss noch ein Fehler sein. Welcher ? Danke für die Hilfe !
Es ist nicht sinnvoll, eine als static deklarierte Variable in einem Headerfile zu deklarieren.
Hallo Jörg, danke für Deine prompte Antwort, aber... ich habe in main.h alle "zentralen" Konstanten, wie Takt, Bitrate, Entprellzeit etc. stehen und möchte hier auch eine Versionsnummer als string mitführen, die mit printf ausgegeben werden soll. Wie macht man so was denn dann ? Schönen WE Otto
Das "macht man" folgendermassen:* a) Die Variablendeklaration kommt in das *.c File z.B: volatile int8_t enc_delta=0; // -128 ... 127 Damit wird die Variable physikalisch angelegt und kann auch initialisiert werden. b) Alle globalen Variablen, die nach aussen sichtbar sein müssen kommen ins Header file *.h z.B: extern volatile int8_t enc_delta; // -128 ... 127 Damit wird dem Compiler nur der Typ bekannt gegeben (extern). Der Linker sorgt dann für die Verbindung mit der physikalisch angelegten Variable. Hier ist eine Initialisierung Unsinn und daher falsch. In C sind globale Variablen per default static. Das static ist also nicht notwendig (In C++ ist das anders) * natürlich gibt es wie immer viele Möglichkeiten, aber die hier ist üblich
>In C sind globale Variablen per default static. Das static ist also >nicht notwendig (In C++ ist das anders) Sind sie nicht. In C sind sie programmweit gültig.
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.