Ciao . . . A intuizione è un istruzione simile alla macro assert (documentati sul funzionamento di quest ultima) . . . In pratica se NO_ASSERTD è definito, viene ridefinita la macro assertd in modo che non faccia niente (istruzione (void)NULL ) . . . E' importante capire che (void)NULL è necessaria affinchè un istruzione tipo :
codice:
assertd(i==0);
Venga espansa in :
codice:
(void)NULL;
Nota che se assertd fosse ridefinita così:
codice:
#define assertd(exp)
L' istruzione
codice:
assertd(i==0);
uerrebbe espansa in:
codice:
;
Il che è un errore . . .