Gast
#2448252
Hallo, hab n Problem: In Datei main.c:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
und in Datei Drehgeber.c:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
liefert: multiple storage classes in declaration specifiers Was kann man da machen
|
Anzeige
|
Fehler: multiple storage classes in declaration specifiers
Gast
#2448252
Hallo, hab n Problem: In Datei main.c:
und in Datei Drehgeber.c:
liefert: multiple storage classes in declaration specifiers Was kann man da machen Joachim schrieb: > Was kann man da machen Nachlesen, welche Bedeutung "static" bei globalen Variablen hat und warum deshalb "extern static" Quatsch ist (und die Fehlermeldung produziert).
Gast
#2448360
Da schrieb jemand in einem älteren Thread: static - Wenn du eine globale Variable mit static deklarierst, ist diese nur innerhalb der Übersetzungseinheit, also in dem c-file wo du diese anlegst sichtbar. Ausserhalb der Übersetzungseinheit kann auf diese Variable nicht zugegriffen werden. Klar. Aber was macht ich wenn ich die Variable in einer anderen Datei brauche? Dann machst du sie eben nicht static. Joachim schrieb: > new ^= 1; // convert gray to binary undefined variable: new
Gast
#2448610
Daran liegts nicht, kam durch c&p in den Thread.
Gast
#2448635
Joachim schrieb: > Da schrieb jemand in einem älteren Thread: > > static - Wenn du eine globale Variable mit static deklarierst, ist diese > > nur innerhalb der Übersetzungseinheit, also in dem c-file wo du diese > > anlegst sichtbar. Ausserhalb der Übersetzungseinheit kann auf diese > > Variable nicht zugegriffen werden. > > > > Klar. > > Aber was macht ich wenn ich die Variable in einer anderen Datei brauche? Eine Schnittstellenfunktion schreiben, die als Rückgabeparameter jene besagte static-Variable dem Aufrufer der anderen Übersetzungseinheit kopiert? Das nennt man Datenkapselung und kommt aus der Objekt orientierten Programmierung. /* Schnittstelle für Zugriff auf Static Variable */ z. B. uint8 GetStaticVariableFromKomponente(void); uint8 GetStaticVariableFromKomponente(void) { return StaticVariable; } Die Funktion "GetStaticVariableFromKomponente" muß dann ebenfalls in der gleichen C-Datei sich befinden, wo die Static Variable deklariert ist. In der Header-Datei dieser C-Datei wird dann über extern GetStaticVariableFromKomponente(void); der Zugrif öffentlich gemacht. Man kann sie auch in der verwendeteten anderen C-Datei eintragen. Das wird mit zunehmender Komplexität unübersichtlich. Vielleicht hilft mein Vorschlag weiter. Viel Erfolg Joachim schrieb: > Daran liegts nicht, kam durch c&p in den Thread. Dann poste bitte etwas, was in sich geschlossen compilierfähig ist und die von dir genannte Fehlermeldung beim Compilieren ausspuckt. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|