Christian Seiler: C variablengültigkeitsbereiche.

Beitrag lesen

Hallo,

Das Ziel: es gibt einige Variablen die global gelten sollen. Die will ich mehrfach auf die "Urwerte" zurücksetzen.
Dafür wollt eich eine funktion schreiben - sowas wie reset(); die sämtlichen variablen wieder die gewünschten Werte zuweist. Die Frage ist bloß - wie?

selbst wen ich eine variabe global declariere (vor main() declarieren, richtig?)- jegliche veränderungen innerhalb der funktionen werden die globalen werte nicht betreffen.

gibt es da eine Lösung außer dass ich jedes "Anfassen" der variabeln in eigene functionen packe ?

Ich verstehe Dein Problem nicht ganz:

#include <stdio.h>  
  
// Originalwerte  
#define ORIG_var1         1  
#define ORIG_var2         2  
  
int var1 = ORIG_var1;  
int var2 = ORIG_var2;  
  
void resetMyGlobalVars () {  
  var1 = ORIG_var1;  
  var2 = ORIG_var2;  
}  
  
void incVar1 () { var1++; }  
void incVar2 () { var2++; }  
  
int main (int argc, char **argv) {  
   printf ("var1 = %d, var2 = %d\n", var1, var2);  
   incVar1 ();  
   incVar1 ();  
   incVar2 ();  
   printf ("var1 = %d, var2 = %d\n", var1, var2);  
   resetMyGlobalVars ();  
   printf ("var1 = %d, var2 = %d\n", var1, var2);  
   return 0;  
}

Ich sollte übrigens noch erwähnen, dass globale Variablen i.A. eine schlechte Idee sind - und das was Du zu versuchen scheinst, sieht für mich irgendwie nach unsauberem Codedesign aus. Ich würde an Deiner Stelle das ganze Konzept eventuell mal überarbeiten wollen.

Ausnahmen bestätigen selbstverständlich die gerade genannte Regel.

Viele Grüße,
Christian