2010-08-12 4 views
3

En fournissant le nombre incorrect d'arguments à printf():Comment obtenir des avertissements printf dans Visual Studio 2005?

printf("%s", "foo", "bar"); 

ou quand en fournissant des arguments du mauvais type:

printf("%d", "foo"); 

gcc est en mesure de mettre en garde contre ces erreurs:

$ gcc -Wformat printf_too_many_arguments.c 
printf_warnings.c: In function `main': 
printf_warnings.c:5: warning: too many arguments for format 
printf_warnings.c:5: warning: too many arguments for format 

$ gcc -Wformat printf_argument_of_wrong_type.c 
printf_warnings.c: In function `main': 
printf_warnings.c:5: warning: format `%d' expects type `int', but argument 2 has type `char *' 
printf_warnings.c:5: warning: format `%d' expects type `int', but argument 2 has type `char *' 

Comment obtenir de tels avertissements avec Visual Studio 2005?

- dave

+0

Le compilateur gcc contient un code spécial qui "connaît" la fonction printf et la chaîne de format. pour autant que je sache, le compilateur MS n'a pas cela. –

Répondre

0

Malheureusement MSVC/Visual Studio ne supporte pas.

Voir aussi __attribute__((format(printf, 1, 2))) for MSVC?

+1

Merci pour l'info. L'absence de tels avertissements de la part de Visual Studio est vraiment mauvaise. – user418190

+0

Visual Studio a pris en charge cela pendant presque 10 ans (y compris dans VS2005): http://msdn.microsoft.com/en-us/library/ms235402(v=vs.80).aspx, il suffit de passer le drapeau/analyse. –

0

Vous aurez besoin du logiciel supplémentaire pour le faire. Jetez un oeil à PC-Lint (http://www.gimpel.com/). Il peut trouver ces types d'erreurs (et beaucoup plus d'erreurs [potentielles] aussi).

1

J'utilise cppcheck (http://cppcheck.sourceforge.net/) lorsque je travaille avec Visual Studio 2005 qui détecte les discordances entre le nombre de paramètres fournis à printf/wprintf et le nombre de paramètres requis.

Malheureusement, il ne vérifie pas les types correspondent, mais c'est un début.

Questions connexes