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