Warnungen ausgeben wenn: int geteilt wird
-
Hi!
Wie bekomm ich eine Warnung ausgegeben, wenn ein Integer durch etwas
geteilt wird?
Umgebung ist VS2005 C++Viele Grüße
Tomatojuice
-
Durch einen int teilen ist eine gueltige und sehr uebliche Aktion, ich bezweifle dass es dafuer eine Warnung gibt, die du aktivieren kannst. Zur Not: einfach alle einschaltbaren Warnungen in der IDE durchgehen, aber ich glaub wie gesagt nicht, dass du fuendig werden wirst
-
Hier ein übler Hack für Warnungen zur Laufzeit:
class Int { int i; public: Int(int i):i(i){} Int(){} operator int(){return i;} // Alle Memberoperatoren die int so kennt, außer /= Int& operator/=(Int a) { cerr<<"Warnung\n"; i/=a.i; return *this; } // Alle freien Operatoren die int so kennt, außer / friend const Int operator/(Int a, Int b) { cerr<<"Warnung\n"; return Int(a.i/b.i); } }; int main() { #define int Int int i=1; int j=2; int k=i/j; }
Mit Templates könnte man eventuell auch eine Warnung zur Compilezeit erzeugen, aber dann nur beim ersten Vorkommen der Division.
-
Dein Hack ist noch nicht ganz korrekt.
Tomatojuice wollte die Fehlermeldung, wenn ein Integer durch ETWAS geteilt wird, etwas kann auch ein double sein.Ich mach mal einen Anfang:
template<typename TEtwas> Int& operator/=(TEtwas a){a/0;i/=a.i;return *this;} // a/0 gibt Warning; kein const Int&, weil sich ints anders verhalten.
Das ganze kommt mir so sinnlos vor, dass ich auf weitere Ausführungen verzichte.