我有一个接受char*
类型参数的函数,如f("string");
如果字符串参数是在函数调用中由the-fly定义的,那么如何在字符串体内扩展宏?
例如:
#define COLOR #00ff00
f("abc COLOR");
等同于
f("abc #00ff00");
但是不执行扩展,函数按字面意思abc COLOR
。
特别是,我需要将宏扩展为\"#00ff00\"
,以便将引用的标记与传递给f()
的其余字符串参数连接起来,包括引号;也就是说,预处理器必须完成他的工作并欢迎编译器将代码从f("abc COLOR");
转换为f("abc \"#00ff00\"");
答案 0 :(得分:35)
您无法在字符串中展开宏,但可以编写
#define COLOR "#00ff00"
f("abc "COLOR);
请记住,这种连接是由C预处理器完成的,并且只是连接普通字符串而不是变量的功能。
答案 1 :(得分:4)
#define COLOR "#00ff00"
f("abc "COLOR);