Uso della macro come livello di astrazione

2

Sto discutendo con un collega sull'uso della macro come un sottile (estremamente) livello di astrazione rispetto all'utilizzo di un wrapper di funzioni. L'esempio che ho usato è

Modo macro.

#define StartOSTimer(period)  (microTimerStart(period))

Metodo wrapper funzionale

void StartOSTimer(period)
{
    microTimerStart(period);
}

Personalmente, mi è piaciuto il secondo metodo in quanto consente modifiche future, anche le dipendenze #include sono astratte.

    
posta tehnyit 29.03.2012 - 11:53
fonte

2 risposte

2

Le macro sono abominazioni orribili che dovrebbero essere evitate in ogni situazione in cui tu possa mai cavartela. Dovresti avere una giustificazione abbastanza estrema per usarne uno.

    
risposta data 29.03.2012 - 12:07
fonte
0

Dato che usi il wrapper, puoi anche usarlo con un puntatore a funzione. Se lo si utilizza come tale, è possibile passare una funzione di stub e le funzioni di test dell'unità che la utilizzano. Non puoi farlo con la macro.

    
risposta data 29.03.2012 - 12:22
fonte

Leggi altre domande sui tag