在引用的字符串中展开宏

可能重复:
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);