Unix/Linux Go Back    


NetBSD 6.1.5 - man page for __concat (netbsd section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


__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 argu-
     ment 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\n", __CONCAT(Net, BSD));
	   (void)printf("%s%s\n", __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
     preprocessor 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
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 07:03 AM.