Vous pouvez utiliser l'attribut inutilisé de gcc / clang, mais j'utilise ces macros dans un en-tête pour éviter d'avoir des attributs spécifiques à gcc partout dans la source, avoir aussi __attribute__partout est un peu bavard / laid.
#ifdef __GNUC__
# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#else
# define UNUSED(x) UNUSED_ ## x
#endif
#ifdef __GNUC__
# define UNUSED_FUNCTION(x) __attribute__((__unused__)) UNUSED_ ## x
#else
# define UNUSED_FUNCTION(x) UNUSED_ ## x
#endif
Ensuite, vous pouvez faire ...
void foo(int UNUSED(bar)) { ... }
Je préfère cela parce que vous obtenez une erreur si vous essayez d'utiliser barle code n'importe où, vous ne pouvez donc pas laisser l'attribut par erreur.
et pour les fonctions ...
static void UNUSED_FUNCTION(foo)(int bar) { ... }
Note 1):
Pour autant que je sache, MSVC n'a pas d'équivalent à __attribute__((__unused__)).
Note 2):
La UNUSEDmacro ne fonctionnera pas pour les arguments qui contiennent des parenthèses,
donc si vous avez un argument comme float (*coords)[3] vous ne pouvez pas le faire,
float UNUSED((*coords)[3])ou float (*UNUSED(coords))[3], c'est le seul inconvénient de la UNUSEDmacro que j'ai trouvé jusqu'à présent, dans ces cas, je retombe à(void)coords;