unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (NetBSD-6.1.5)
Page:
Section:
Apropos / Subsearch:
optional field

__UNCONST(3)               Library Functions Manual               __UNCONST(3)

NAME
     __UNCONST -- compile time cast-away macro

SYNOPSIS
     #include <&lt;sys/cdefs.h>&gt;

     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
     qualifier 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).

NetBSD 6.1.5                   December 16, 2010                  NetBSD 6.1.5