Macros 串化嵌套宏

Macros 串化嵌套宏,macros,c-preprocessor,Macros,C Preprocessor,如果有一个宏是另一个宏的参数,并且该参数将在宏定义中字符串化,那么是否可以不字符串化作为参数的宏,而是字符串化其原始值?下面是一个例子 #define EXAMPLE "original" #define CONCATENATE(X) "Concatenate Strings " #X CONCATENATE(BYTE) //Results as "Concatenate Strings EXAMPLE" //I need "Concatenate St

如果有一个宏是另一个宏的参数,并且该参数将在宏定义中字符串化,那么是否可以不字符串化作为参数的宏,而是字符串化其原始值?下面是一个例子

#define EXAMPLE "original"
#define CONCATENATE(X) "Concatenate Strings " #X

CONCATENATE(BYTE)  //Results as "Concatenate Strings EXAMPLE"
                   //I need "Concatenate Strings original"

有没有办法对作为参数给定的宏的原始值进行字符串化?

字符串化运算符在生成标记时抑制宏参数扩展。要强制它,需要通过中间宏传递参数

例如,通过使串联成为一个完整的包装器:

#define CONCATENATE_(X, Y) X #Y
#define CONCATENATE(X) CONCATENATE_("Concatenate Strings", X)

可能是一个可能的重复,但这个问题的标题与一个特定的问题直接相关,而另一个问题的标题更一般。