> Gibts ne Möglichkeit, die Gültigkeitsbereiche für die Namen zu
trennen?
Würdest du den relevanten Codeausschnitt bitte mal posten? Ich kann mir
gerade etwas schlecht vorstellen, was du meinst. :/
Wenn in C eine (statische) Variable mehrfach definiert ist, gibt es
Linkerfehler. Eine lokale Variable überdeckt aber eine globale, daher
ist folgender Code korrekt:
// globales foo
int foo = 1;
void bar()
{
// lokales foo, überdeckt globales foo
int foo = 0;
// globales foo ist immer noch 1
}
gcc produziert da aber AFAIK zumindest eine Warnung, weil so ein
Verbergen von Variablen selten beabsichtigt ist.
Deine Variable ticks war ja global; ich vermute, du hast in einem
anderen Modul ticks unbeabsichtigt verändert. Genau deswegen sind in
C++ globale Variablen böse. Man überblickt die möglichen Änderungen
nicht.
Eine pragmatische Möglichkeit für dein Problem wäre folgende:
static unsigned int ticks;
Wenn man das Schlüsselwort static bei globalen Variablen angibt, hat es
eine andere Bedeutung als "statisch" (das sind globale Variablen ja
per se). Es bewirkt einfach, dass die Variable nur in der aktuellen ÜE
gültig ist. Das heißt, versehentliche Änderungen der Variable in einer
anderen .c-Datei sind nicht mehr so einfach möglich.