Avertissement du compilateur (niveau 1) C4002
Mise à jour : novembre 2007
Message d'erreur
trop de paramètres réels pour la macro 'identificateur'
too many actual parameters for macro 'identifier'
Le nombre de paramètres réels dans la macro dépasse le nombre de paramètres formels dans sa définition. Le préprocesseur collecte les paramètres supplémentaires mais les ignore lors de l'expansion macro.
L'erreur C4002 peut se produire lors d'une utilisation de Variadic Macros.
L'exemple suivant génère l'erreur C4002 :
// C4002.cpp
// compile with: /W1
#define test(a) (a)
int main() {
int a = 1;
int b = 2;
a = test(a,b); // C4002
// try..
a = test(a);
}
Cette erreur peut également être due à la mise en conformité du compilateur pour Visual Studio .NET 2003 : les virgules superflues dans la macro ne sont plus acceptées.
Le compilateur n'accepte plus les virgules superflues dans une macro. Pour produire un code qui est valide dans les versions Visual Studio .NET 2003 et Visual Studio .NET de Visual C++, supprimez les virgules superflues.
Pour plus d'informations, consultez Récapitulatif des modifications sans rupture au moment de la compilation.
// C4002b.cpp
// compile with: /W1
#define F(x,y)
int main()
{
F(2,,,,,,3,,,,,,) // C4002
// Try the following line instead:
// F(2,3)
}