Avec le while, la macro devient :
do { free(x); x = NULL; } while(0);
ce qui est syntaxiquement correct.
Sans le while :
{ free(x); x = NULL; };
ce qui est syntaxiquement incorrect : on ne peut pas avoir de point virgule après une fermeture d'accollade. Donc ca compilera pas.
[^] # Re: Attention quand même
Posté par hex . En réponse à la dépêche La robustesse de nombreux navigateurs web mise en cause. Évalué à 2.
FREE0(p);
Note le point virgule.
Avec le while, la macro devient :
do { free(x); x = NULL; } while(0);
ce qui est syntaxiquement correct.
Sans le while :
{ free(x); x = NULL; };
ce qui est syntaxiquement incorrect : on ne peut pas avoir de point virgule après une fermeture d'accollade. Donc ca compilera pas.
Tout bon kernel hacker sait cà voyons ;-)