Puede usar el atributo no utilizado de gcc / clang, sin embargo, uso estas macros en un encabezado para evitar tener atributos específicos de gcc en toda la fuente, también tener en __attribute__
todas partes es un poco detallado / feo.
#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
Entonces puedes hacer ...
void foo(int UNUSED(bar)) { ... }
Prefiero esto porque obtienes un error si intentas usar bar
el código en cualquier lugar para que no puedas dejar el atributo por error.
y para funciones ...
static void UNUSED_FUNCTION(foo)(int bar) { ... }
Nota 1):
Hasta donde yo sé, MSVC no tiene un equivalente a__attribute__((__unused__))
.
Nota 2):
la UNUSED
macro no funcionará para los argumentos que contienen paréntesis,
por lo que si tiene un argumento float (*coords)[3]
que no puede hacer,
float UNUSED((*coords)[3])
o float (*UNUSED(coords))[3]
, este es el único inconveniente de la UNUSED
macro que encontré hasta ahora, en estos casos retrocedo a(void)coords;