Il Preprocessore del linguaggio C quando usare macro?

Rammentate che l'utilizzo di una macro è differente dall'utilizzo di una funzione:

Previous slide Next slide Back to the index View Graphic Version

Notes:


Se non uso prototipi non ho controllo sugli argomenti.
Si conforntino per esempio la macro:
#define MUL_BY_TWO(a) ((a)*(a))
e la funzione:
int mul_by_two(int a)
{
return(a*a);
}
Cosa succede se ad una delle due passo 2.5 ???

#define sqrt(a) (((a)<0)?sqrt(-(a)):sqrt(a))