__USE(3) Library Functions Manual __USE(3)

NAME

__USEcompile time macro that marks a variable as being used

SYNOPSIS

#include <sys/cdefs.h>
void
__USE(x);

DESCRIPTION

The __USE macro can be used to omit warnings produced by certain compilers when variables are being set, but not used in a function.
There are cases where it is simpler to mark a variable as used, as opposed to ifdef out its use:
#ifdef DEBUG_FOO 
#define DPRINTF(a) printf a 
#else 
#define DPRINTF(a) 
 
void 
foo(void) { 
	int var; 
 
	var = getval(); 
 
	DPRINTF(("val is %d0, var)); 
}
In this case, ifdefing the code would make it:
void 
foo(void) { 
#ifdef DEBUG_FOO 
	int var; 
 
	var = getval(); 
 
	DPRINTF(("val is %d0, var)); 
#else 
	(void)getval(); 
#endif 
}
This is not desirable because it duplicates code. With the __USE macro this can be written as:
void 
foo(void) { 
	int var; 
 
	var = getval(); 
 
#ifdef DEBUG_FOO 
	DPRINTF(("val is %d0, var)); 
#else 
	__USE(var); 
#endif 
}
without producing compiler warnings.
Although it is simple to write:
	(void)var;
abstracting this into the macro allows for alternate implementations, as well as changing it to an empty implementation so that the liveness of the variable can be re-evaluated.

IMPLEMENTATION NOTES

__USE is implemented as:
#define __USE(a)	((void)(a))

SEE ALSO

cc(1), cdefs(3)

CAVEATS

__USE should be used sparingly as it can cause valid warnings to be hidden.
Use of this macro is non-portable; this is part of the implementation namespace and should only be used in NetBSD code.
October 17, 2013 NetBSD 8.2