variable ständig auf wert überprüfen
-
Hallo,
Ich möchte gerne, dass eine Fehlermeldung ausgegeben wird, sobald eine variable einen bestimmten wert erhält. Die Überprüfung auf den Wert soll ständig erfolgen, aber ohne,dass ich nach jeder rechenoperation den inhalt teste:[/code]
int main() { int c; c=1-2 if(c==0)fprintf(stderr,"Fehler"); c=5/2 if(c==0)fprintf(stderr,"Fehler"); c=9 if(c==0)fprintf(stderr,"Fehler"); c=x if(c==0)fprintf(stderr,"Fehler"); return 0; }
mfg Christoph
-
symbian schrieb:
Hallo,
Ich möchte gerne, dass eine Fehlermeldung ausgegeben wird, sobald eine variable einen bestimmten wert erhält. Die Überprüfung auf den Wert soll ständig erfolgen, aber ohne,dass ich nach jeder rechenoperation den inhalt teste:[/code]
int main() { int c; c=1-2 if(c==0)fprintf(stderr,"Fehler"); c=5/2 if(c==0)fprintf(stderr,"Fehler"); c=9 if(c==0)fprintf(stderr,"Fehler"); c=x if(c==0)fprintf(stderr,"Fehler"); return 0; }
mfg Christoph
Mach halt ein Makro draus oder pack es in ne Funktion...
Überprüfen musst du es sowieso selbst...das nimmt dir keiner ab...
(was auch immer du mit oben gezeigten Code meinst)
-
mit VirtualProtect() kannst du einen bereich schützen. wenn dieser verändert wird gibts einen fehler. geht aber nur unter windows.
-
helferlein schrieb:
mit VirtualProtect() kannst du einen bereich schützen. wenn dieser verändert wird gibts einen fehler. geht aber nur unter windows.
er will 'c' ja verändern. es soll nur nie eine 0 da rein.
-
symbian schrieb:
..Die Überprüfung auf den Wert soll ständig erfolgen, aber ohne,dass ich nach jeder rechenoperation den inhalt teste
Das ist unmöglich. Du musst vorher in die Variable 'reingucken', sie abfragen, d.h. ihren Inhalt testen.
-
Du könntest prinzipiell eine Funktion schreiben die als Parameter deine Variable und den Wert den sie annehmen soll bekommt. bzw. Zeiger auf eben diese.
Die Funktion ist sozusagen das "=" mit der Erweiterung, dass in selbiger abgefragt wird ob der Wert nun einem der von dir gewünschten entspricht.Also >>ca<< so:
bool foo(int *x1, int *x2){ //x1 den Wert zuweisen *x1=*x2; //prüfen ob x1 nun einem der meldepflichtigen Werte entspricht, falls ja gib true //zurück. return *x1==gVal; }
Du kannst das natürlich auch mit mehrere Werten so machen.
Für unterschiedliche Datentypen bzw Konstanten musst du dir aber was einfallen lassen