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)
可能是一个可能的重复,但这个问题的标题与一个特定的问题直接相关,而另一个问题的标题更一般。