说我有这个:
#define CAKE , something
我想要的结果是", something"
。可以吗?
以下在gcc中不起作用:
#define MAKE_STRING(x) #x
#define STRING(x) MAKE_STRING(x)
STRING(CAKE)
编译器认为我将两个参数传递给MAKE_STRING()和balks。
答案 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)
请试一试。