Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

__concat(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

CDEFS(3)						   BSD Library Functions Manual 						  CDEFS(3)

NAME
cdefs -- common definitions and macros SYNOPSIS
#include <sys/cdefs.h> DESCRIPTION
The <sys/cdefs.h> header includes some common definitions and macros typical to the C language conventions of NetBSD. Among these are: o Certain C language properties and definitions that are versioned according to the support in compilers. Examples include the __func__ keyword and the restrict type qualifier from C99. o Macros and definitions specific to compilers, preprocessors, and linkers; see __CONCAT(3), __UNCONST(3), __insn_barrier(3), and attribute(3). o Utility macros provided for convenience; see __arraycount(3) and bits(3). The header also contains the __RCSID() and __KERNEL_RCSID() macros used for version control system (VCS) identifiers. Thus, all NetBSD source code files typically include <sys/cdefs.h>, included as the first thing right after any possible copyright texts; /*- * Copyright (c) 1984 John Doe * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted. */ #include <sys/cdefs.h> __RCSID("$NetBSD: cdefs.3,v 1.3 2011/04/08 07:55:04 jruoho Exp $"); It is possible to identify the RCS keyword strings by using ident(1). SEE ALSO
ident(1), param(3), stddef(3), types(3), c(7) HISTORY
The <sys/cdefs.h> header was originally imported from 386BSD. BSD
April 8, 2011 BSD
Man Page