c - 展开引用字符串中的宏

标签 c macros c-preprocessor c-strings

<分区>

Possible Duplicate:
C Macros to create strings

我有一个函数接受一个 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 预处理器完成的,并且只是连接普通字符串的功能,而不是变量等。

关于c - 展开引用字符串中的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12958925/

相关文章:

c - 使用宏选择文件

C预处理器: dynamic const char

c - 如何从子进程获取信息

c - void 函数中的递归过程

c++ - 浮点运算的最佳实践

c++ - 条件宏文本替换

clojure - 如何编写打印自己后缀的嵌套宏?

c - 某些配置中不需要的 C 类型的良好实践

c - 实现 C 预处理器

c - “已定义但未使用”警告和正确的代码风格