Você pode usar o atributo não utilizado do gcc / clang, no entanto, eu uso essas macros em um cabeçalho para evitar atributos específicos do gcc em toda a fonte, além de ter em __attribute__
todos os lugares um pouco detalhado / feio.
#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
Então você pode fazer ...
void foo(int UNUSED(bar)) { ... }
Prefiro isso porque você recebe um erro se tentar usar bar
o código em qualquer lugar, para não deixar o atributo por engano.
e para funções ...
static void UNUSED_FUNCTION(foo)(int bar) { ... }
Nota 1):
Até onde eu sei, o MSVC não tem um equivalente a __attribute__((__unused__))
.
Nota 2):
a UNUSED
macro não funcionará para argumentos que contenham parênteses;
portanto , se você tiver um argumento como float (*coords)[3]
não pode ,
float UNUSED((*coords)[3])
ou float (*UNUSED(coords))[3]
, essa é a única desvantagem doUNUSED
macro que encontrei até agora, nesses casos, recuo para(void)coords;