我有一个函数,它接受一个类型为
char*
的参数,例如 f("string");
例如:
#define COLOR #00ff00
f("abc COLOR");
相当于
f("abc #00ff00");
但是不执行扩展,并且该函数按字面意思接收
abc COLOR
。
特别是,我需要将宏精确扩展为
\"#00ff00\"
,以便这个带引号的标记与传递给 f()
的字符串参数的其余部分连接起来,包括引号;也就是说,预处理器必须完成他的工作并欢迎编译器将代码从 f("abc COLOR");
转换为 f("abc \"#00ff00\"");
你不能在字符串中展开宏,但你可以写
#define COLOR "#00ff00"
f("abc "COLOR);
请记住,此连接是由 C 预处理器完成的,并且只是连接纯字符串而不是变量等的功能。
#define COLOR "#00ff00"
f("abc "COLOR);