PDA

View Full Version : [c++] fix


Rizzolo
08-05-2010, 01:25
Non ho trovato una libreria che contenga il comando "fix"; cercando su internet è spuntata questa soluzione:

int Fix( float x)
{
return (int)x;
}

ma non riesco a farla andare.
Implementandola come classe il compilatore mi dice che Fix non è dichiarata.
Help :(

cionci
08-05-2010, 09:05
Ci devi fare vedere il codice. Quella funzione compila senza problemi.
Credo in ogni caso che si molto più semplice implementarla come macro.

#define fix_double(value) ((double)(int)value)
#define fix_float(value) ((float)(int)value)

fero86
08-05-2010, 10:37
Credo in ogni caso che si molto più semplice implementarla come macro.

#define fix_double(value) ((double)(int)value)
#define fix_float(value) ((float)(int)value) quando le macro hanno i parametri é sempre meglio usare le parentesi attorno ai parametri:
#define fix_double(value) ((double)(int)(value))
#define fix_float(value) ((float)(int)(value)) non si sa mai che razza di espressione potrebbe voler mettere al posto di "value" lo sviluppatore creativo.

fero86
08-05-2010, 10:38
aggiungo che non é tanto questione di semplicitá il preferire l'implementazione sotto forma di macro anziché di funzione, quanto il fatto che due cast tipicamente non valgono l'onere di una chiamata e relativa creazione e distruzione di uno stack frame.

cionci
08-05-2010, 10:53
quando le macro hanno i parametri é sempre meglio usare le parentesi attorno ai parametri:
Vero, me lo sono dimenticato.

Rizzolo
08-05-2010, 11:27
Siete dei geni!!
Dove avete appreso queste chicche?
Forse mi ci vuole di più di un semplice "fondamenti di c++"...
Grazie ancora una volta :)