可以对包含逗号的C宏进行字符串化吗?

可以对包含逗号的C宏进行字符串化吗?,c,c-preprocessor,C,C Preprocessor,假设我有这个: #define CAKE , something 我想要的结果是,“”。能做到吗 以下内容在gcc中不起作用: #define MAKE_STRING(x) #x #define STRING(x) MAKE_STRING(x) STRING(CAKE) 编译器认为我正在将两个参数传递到MAKE_STRING()和balks中。如果预处理器支持可变宏,\uu VA_ARGS\uu将实现以下功能: #define CAKE , something

假设我有这个:

#define CAKE     , something
我想要的结果是
,“
”。能做到吗

以下内容在gcc中不起作用:

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

STRING(CAKE)

编译器认为我正在将两个参数传递到MAKE_STRING()和balks中。

如果预处理器支持可变宏,
\uu VA_ARGS\uu
将实现以下功能:

#define CAKE     , something

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

#include <stdio.h>
int main()
{
    printf("%s\n", STRING(CAKE) );
}
定义蛋糕之类的东西 #定义MAKE_字符串(…)35;u VA_参数__ #定义字符串(x)生成字符串(x) #包括 int main() { printf(“%s\n”,字符串(蛋糕)); }
请试一试。

谢谢。我实际做的是将MAKE_STRING()改为#u VA_ARGS__
#define CAKE     (, something)