Seltsames Verhalten mit globaler Variable in externer C Datei

OP #2664867
Lesenswert?

Hi,

ich habe eine c Datei zu meinem Projekt hinzugefügt. In der C Datei sind 
3 globale Variablen:

uint8_t     var1=0,var2=0,var3=0;

Sie sind im zugehörigen Header wie folgt aufgeführt:

extern uint8_t     var1,var2,var3;

Ich gebe die dritte in meinem Main an einem Display aus.

Die Variablen var1 und var2 Stecken in Funktionen die ich nicht nutze 
und die auch intern nicht genutzt werden. Ich nutze diese Variablen auch 
im Main nicht.

Nun habe ich ständig wackelnde Werte in der Variablen var3.

Ich habe der Displayfunktion im Main einen Festwert übergeben, dann ist 
es weg. Also an der Ausgabe scheint es nicht zu liegen.

Ich habe auch in der c Datei alles in frage kommende auskommentiert, 
nichts änderte sich bis ich die beiden Variablen var1 und var2 aus der 
globalen definition gestrichen hatte, dann auf mal: keine Bewegung mehr 
auf der dritten, obwohl die Variabel var1 und var2 in einer Funktion 
stecken die wie gesagt nicht genutzt wird. Wie kann soetwas zustande 
kommen, dass müssen doch irgendwelche Einsellungen am Compiler sein, 
oder?

Gruß,
TS
Gast #2664878
Lesenswert?

moin,

scheint so auszusehen, als ob dein Compiler (welcher auch immer das sein 
sollte) ggf die initallisierung auf 0 nicht richtig macht oder gar 
nicht.
ggf kommt er mit der schreibweise nicht klar.

du hast nicht dummer weise in der main auch eine var3 definiert? dann 
hätte die nähmlich vorrang.

bzw die var1 bis varx an einer bestimmten stelle einfach selber noch mal 
sauber initallisieren.
OP #2664905
Lesenswert?

wenn ich die FUnktion die ich garnicht nutze komplett auskommentiere, 
und die Variablen aber global lasse, dann ist es auch weg... obwohl 
diese Funktion nicht genutzt wird und nicht mal im Header steht.

Ich habe der Funktion die var1 und var2 nutzt mal willkührliche Namen 
gegeben - das Springen bleibt, erst wenn ich sie komplett auskommentier 
ist alles ok...

Kann es sein dass der Compiler die var1 und var2 beim auskommentieren 
der Funktion die sie nutzt die Variablen nicht mehr beachtet und es sich 
um eine SPeichergeschichte handelt, also eine Verschiebung o.ä. in einem 
vielleicht ganz anderen Bereich?

TS
Gast #2664908
Lesenswert?

Es kann sein, dass Du mal den kompletten Code zeigen solltest.

Du hast hier erstmal nur Symptome. Die Ursache für eine ungewollte 
Veränderung von Variablen berühren die hier vermuteten Gründe und 
Versuche nicht.
Gast #2665046
Lesenswert?

durch auskommentieren von var1 und var2 veränderst du das 
speicherabbild.
var3 wird vermutlich dadurch an eine andere position gelinkt.
Schau mal in der map file nach was direkt davor bzw danach kommt. 
vermutlich irgend ein array oder stack, ... und dort wird vermutlich zu 
weit nach unten addressiert und var3 manipuliert wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren