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 UNUSEDmacro 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 UNUSEDmacro que encontré hasta ahora, en estos casos retrocedo a(void)coords;