Erreur du compilateur C2009

réutilisation de 'identificateur' de macro formelle

La liste de paramètres formel d’une définition de macro utilise l’identificateur plusieurs fois. Les identificateurs de la liste de paramètres de la macro doivent être uniques.

Exemples

L’exemple suivant génère l’erreur C2009 :

// C2009.cpp
#include <stdio.h>

#define macro1(a,a) (a*a)   // C2009

int main()
{
    printf_s("%d\n", macro1(2));
}

Résolution possible :

// C2009b.cpp
#include <stdio.h>

#define macro2(a)   (a*a)
#define macro3(a,b) (a*b)

int main()
{
    printf_s("%d\n", macro2(2));
    printf_s("%d\n", macro3(2,4));
}