2

Say I have this:

#define CAKE     , something

and the result I want is ", something". Can it be done?

The following doesn't work in gcc:

#define MAKE_STRING(x)  #x
#define STRING(x)       MAKE_STRING(x)

STRING(CAKE)

The compiler thinks I'm passing two arguments into MAKE_STRING() and balks.

Brian Tompsett - 汤莱恩
  • 5,438
  • 68
  • 55
  • 126
cleong
  • 6,807
  • 3
  • 29
  • 40

2 Answers2

6

If your preprocessor supports variadic macros, __VA_ARGS__ will do the trick:

#define CAKE     , something

#define MAKE_STRING(...)  #__VA_ARGS__
#define STRING(x)       MAKE_STRING(x)

#include <stdio.h>
int main()
{
    printf("%s\n", STRING(CAKE) );
}
jfly
  • 7,335
  • 3
  • 32
  • 63
0
#define CAKE     (, something)

please have a try.

BlackMamba
  • 9,652
  • 6
  • 42
  • 61