- NetBSD Manual Pages
__UNCONST(3) NetBSD Library Functions Manual __UNCONST(3)
Powered by man-cgi (2021-03-02).
Maintained for NetBSD
by Kimmo Suominen.
Based on man-cgi by Panagiotis Christias.
__UNCONST -- compile time cast-away macro
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.
These macros are implemented by explicitly using unsigned long instead of
intptr_t, a signed type guaranteed to hold a pointer.
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 9.99 October 17, 2013 NetBSD 9.99