__UNCONST(3) - NetBSD Manual Pages

__UNCONST(3)            NetBSD Library Functions Manual           __UNCONST(3)


NAME
__UNCONST -- compile time cast-away macro
SYNOPSIS
#include <sys/cdefs.h> void __UNCONST(x); void __UNVOLATILE(x);
DESCRIPTION
The __UNCONST() macro can be used to omit warnings produced by certain compilers when operating with pointers declared with the const type qual- ifier in a context without such qualifier. Examples include passing a pointer declared with the const qualifier to a function without such qualifier, and variable assignment from a const pointer to a non-const pointer. In the same vein, the __UNVOLATILE() macro can be used to exclude warnings related to the volatile type qualifier.
IMPLEMENTATION NOTES
These macros are implemented by explicitly using unsigned long instead of intptr_t, a signed type guaranteed to hold a pointer.
SEE ALSO
cc(1), cdefs(3)
CAVEATS
As both macros may hide valid errors, their usage is not recommended unless there is a well-thought reason for a cast. A typical use case for __UNCONST() involve an API that does not follow the so-called ``const correctness'' even if it would be appropriate. Valid use cases of __UNVOLATILE() include passing a volatile pointer to memset(3). Use of this macro is non-portable; this is part of the implementation namespace and should only be used in NetBSD code. NetBSD 8.3 October 17, 2013 NetBSD 8.3

Powered by man-cgi (2024-08-26). Maintained for NetBSD by Kimmo Suominen. Based on man-cgi by Panagiotis Christias.