39

可能重复:
创建字符串的 C 宏

我有一个接受一个类型参数的函数char*,例如f("string");
如果字符串参数是在函数调用中由动态定义的,如何在字符串主体中扩展宏?

例如:

#define COLOR #00ff00
f("abc COLOR");

相当于

f("abc #00ff00");

而是不执行扩展,并且函数按字面意思接收abc COLOR.

特别是,我需要将宏扩展为完全\"#00ff00\",以便将这个带引号的标记与传递给的字符串参数的其余部分连接f()起来,包括引号;也就是说,预处理器必须完成他的工作并欢迎编译器将代码f("abc COLOR");f("abc \"#00ff00\"");

4

2 回答 2

51

你不能在字符串中展开宏,但你可以写

#define COLOR "#00ff00"

f("abc "COLOR);

请记住,这种连接是由 C 预处理器完成的,并且只是连接纯字符串的功能,而不是变量左右。

于 2012-10-18T16:06:40.520 回答
4
#define COLOR "#00ff00"
f("abc "COLOR);
于 2012-10-18T16:07:35.757 回答