__UNCONST(3) BSD 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
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).
BSD December 16, 2010 BSD
Check Out this Related Man Page
__CONCAT(3) BSD Library Functions Manual __CONCAT(3)NAME
__CONCAT, __STRING -- argument substitution
SYNOPSIS
#include <sys/cdefs.h>
xy
__CONCAT(x, y);
const char *
__STRING(x);
DESCRIPTION
The __CONCAT macro makes use of the cpp(1) preprocessor to concatenate two tokens. When the macro is expanded, x and y are combined into a
single token, provided that the result forms a valid token; two tokens that together do not form a valid token can not be concatenated. This
is known as ``token concatenation'' or ``token pasting''.
The __STRING() macro uses the conventional '#' preprocessing operator to replace the argument x with a string literal. This is also known as
``stringification''.
EXAMPLES
The following two printf(3) calls produce the same output:
#define Net 0x01
#define BSD 0x02
#define NetBSD "NetBSD"
(void)printf("%s
", __CONCAT(Net, BSD));
(void)printf("%s%s
", __STRING(Net), __STRING(BSD));
SEE ALSO cpp(1), cdefs(3)HISTORY
The __CONCAT() and __STRING() macros first appeared in NetBSD 1.3.
CAVEATS
Many small details direct the proper use of the macros. For example, while all leading and trailing whitespace is ignored when __STRING() is
used, it is undefined whether cpp(1) puts white space between the tokens when __CONCAT() is used. It can be also noted that the C preproces-
sor converts all comments to whitespace before any macros are even considered. The use of either macro is discouraged in complex constructs.
BSD December 16, 2010 BSD
Dear friends,
can anybody pls tell me how to pass FILE pointer in c. I am so confused .. :confused:
suppose I ve two function
1. file_open()
2. read_line()
I want to call these function from main() function and in file_open() function it will open that file and in read_line()... (5 Replies)
Hello everey one,
here i am attempting to compile a c++ project .it's throughing the following errors.
my machine details are as follows:
Linux chmclozr0119 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:19 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
errors:
=====
Generating... (0 Replies)
Hello Everyone,
I have a csv file with text qualifier as "" and data similar to below:
"1","abc","address1","US"
"2","def","address1 "characters in double-quote" address2","IND"
"3","ghi","address1","UK"
In above example, for record 2, we have an issue as in column3 contains double... (2 Replies)