PDA

View Full Version : Aiuto urgente !!! Overflow in C++


mjk
03-04-2002, 10:23
Ciao a tutti... Ho provato a risolvere da solo, ma non c'e' verso... Sto scrivendo la mia tesi di laurea, un programma C++ che simula un modem satellitare. Devo calcolarne le prestazioni, e tutto va bene fino ad un certo punto: se la simulazione va oltre un certo numero di simboli binari generati, i risultati sono sballati. Ho eliminato tutti i contatori (quelli necessari li incremneto % qualcosa...), ma niente, continua a impazzire... Esiste un modo per compilare (in Visual C++) in modo che, in fase di debug, siano segnalati gli overflow?
Vi prego, e' urgente ! ! ! :(
Bye, mjk

/\/\@®¢Ø
03-04-2002, 11:07
Un modo abbastanza veloce puo' essere quello di usare una classe Contatore in cui gli operatori sono stati ridefiniti per fare un controllo sui bound. Penso che si possa trovare su internet un qualcosa di gia' pronto.
Anzi dovresti pure trovare delle classi che implementano interi di dimensione indefinita ( si ingrandiscono a seconda delle necessita' ).

Ad esempio se voglio fare con tranquillita x+=10
potrei fare cosi':

class Counter
{
public:
<snip>

Counter& operator += ( int x )
{
#ifdef DEBUG
if ( x > 0 && value+x < value ) // controllo overflow, bisogna aggiungere anche il controllo degli underflow
exit(1);
#endif
value+=x;
return *this;
}

private:
int value;
};

Il controllo viene fatto solo quando e' definita la macro DEBUG, se i metodi sono messi inline in linea di massima il peso aggiuntivo delle chiamate non dovrebbe sentirsi. Piu' che altro c'e' la rottura di dover star li a scriversi un sacco di operatori e i costruttori.