Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

__string(3) [netbsd 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

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
Man Page