http://www.perlmonks.org?node_id=518911


in reply to Christmas poem since 1988

Strict C compilers (tendra in default mode, gcc with -pedantic-errors) refuse to compile this, because while char v[]="..."; is valid, char v[]=("..."); is not. I haven't yet figured out what the third language is, if you don't mean C++, so I'm not sure if this breaks that, but my simple suggestion to resolve this is:

Instead of
#define q char w=0,v[]=
you can use
#define q(x) char w=0,v[]=x

It doesn't affect the output with less strict C compilers (gcc in default mode, icc), nor does it affect the output as a Perl script.

HTH

Update: I see now that the output is different when compiled as C++ instead of C ("only" instead of "true"), so it must be that that was what you meant.