cdefs.h: Allow __CONCAT() macro to be nested
This commit is contained in:
parent
a4c30acd9d
commit
36fb30dfef
1 changed files with 7 additions and 4 deletions
|
@ -78,9 +78,11 @@
|
||||||
/*
|
/*
|
||||||
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
|
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
|
||||||
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
|
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
|
||||||
* The __CONCAT macro is a bit tricky -- make sure you don't put spaces
|
* The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
|
||||||
* in between its arguments. __CONCAT can also concatenate double-quoted
|
* mode -- there must be no spaces between its arguments, and for nested
|
||||||
* strings produced by the __STRING macro, but this only works with ANSI C.
|
* __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also
|
||||||
|
* concatenate double-quoted strings produced by the __STRING macro, but
|
||||||
|
* this only works with ANSI C.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define ___STRING(x) __STRING(x)
|
#define ___STRING(x) __STRING(x)
|
||||||
|
@ -88,7 +90,8 @@
|
||||||
|
|
||||||
#if __STDC__ || defined(__cplusplus)
|
#if __STDC__ || defined(__cplusplus)
|
||||||
#define __P(protos) protos /* full-blown ANSI C */
|
#define __P(protos) protos /* full-blown ANSI C */
|
||||||
#define __CONCAT(x,y) x ## y
|
#define __CONCAT1(x,y) x ## y
|
||||||
|
#define __CONCAT(x,y) __CONCAT1(x,y)
|
||||||
#define __STRING(x) #x
|
#define __STRING(x) #x
|
||||||
|
|
||||||
#define __const const /* define reserved names to standard */
|
#define __const const /* define reserved names to standard */
|
||||||
|
|
Loading…
Reference in a new issue