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