[GCC-XML] Preprocessor problem with gccxml

Brad King brad.king at kitware.com
Mon May 4 17:11:04 EDT 2009


Johannes Brunen wrote:
> #define decl_() DECL_
> #define DECL_FUNCTION(lib) decl_()lib
[snip]
> After preprocessing on msvc9 I got the following code:
> 
> class ENTITY; DECL_KERN logical is_ENTITY (const ENTITY*);
> 
> After preprocessing with gccxml with this command
[snip]
> class ENTITY; DECL_ KERN logical is_ ENTITY (const ENTITY*);

I do not think the C preprocessor standard guarantees that
your DECL_FUNCTION macro will concatenate the output of
'decl_()' with 'lib' into a single token.  Instead, use the
'##' operator to concatenate:

#define CAT(x,y) CAT_DELAY(x,y)
#define CAT_DELAY(x,y) x##y
#define DECL_FUNCTION(lib) CAT(decl_(),lib)

It should work in any preprocessor.

-Brad



More information about the gccxml mailing list