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

时间:2014-03-21 05:48:47

标签: c c-preprocessor

说我有这个:

#define CAKE     , something

我想要的结果是", something"。可以吗?

以下在gcc中不起作用:

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

STRING(CAKE)

编译器认为我将两个参数传递给MAKE_STRING()和balks。

2 个答案:

答案 0 :(得分:4)

如果你的预处理器支持可变参数宏,__VA_ARGS__就可以解决这个问题:

#define CAKE     , something

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

#include <stdio.h>
int main()
{
    printf("%s\n", STRING(CAKE) );
}

答案 1 :(得分:0)

#define CAKE     (, something)

请试一试。