Ces macros C sont vraiment infâmes ... Le coup de la macro qui se termine par un else est d'une atrocité qu'on rencontre rarement. C'est sur qu'avec des éléments de ce genre, c'est impossible de faire un code propre et maintenable
c'est à se demander si le else inclu dans la macro n'a pas une accolade pour le début de bloc à fermer soi-même (ca pourrait expliquer l'erreur de block scoping donnée par le compilateur)
sinon, effectivement, vu que les paramètres des macros ne sont pas typés, il peut y avoir pas mal de problèmes engendrés par ce genre d'immondices
(et oui, les phases de maintenance sont agaçantes)