Ho dei dubbi su una differenza fra macro e funzioni: ovvero su come vengono chiamate...
data una macro a caso, ad esempio:
la chiamo passandogli un valore composto:codice:#define CUBO(x) x*x*x
è evidente che senza parentesi nell'espressione della macro, il risultato verrà storpiato. Mi spiego meglio. Invece di fare...codice:ris=CUBO(2+5)
mi farà...codice:(2+5)*(2+5)*(2+5)
codice:2+(5*2)+(5*2)+5
Quindi la macro per essere corretta andrebbe definita nel modo che segue:
Veniamo al mio problema: come vengono chiamate queste macro? Nello stesso modo di una funzione, ovvero il risultato della macro viene tornato alla chiamante dopo averlo calcolato in separata sede come avviene per le funzioni o no?codice:#define CUBO(x) (x)*(x)*(x)
Il dubbio è subito spiegato... se devo eseguire questa espressione:
l'espressione viene valutata così:codice:ris=100/CUBO(2+5)
oppure così:codice:ris=100/(2+5)*(2+5)*(2+5)
Perchè se è vero il primo caso allora la macro andrebbe definita con ulteriori parentesi esterne in questo modo:codice:ris=100/266
codice:#define CUBO(x) ((x)*(x)*(x))