我有一个宏,我在其中传递了一个参数:
a.filepath
b.filepath
c.filepath
在这种情况下,/path/to/another/file
/path/to/original/file
/third/file
会扩展为我在使用宏时写入宏的内容。但是,我想向其中之一添加一些字符,如下所示:
#define bind(id) function[function_id::id] = std::bind(otherFunction::id, std::placeholders::_1)
因此,第一次替换id
是原始的,第二次替换为sufix #define bind(id) function[function_id::id] = std::bind(otherFunction::add_id, std::placeholders::_1)
。当我使用id
进行第二次扩展时,不会进行扩展,因此我最终以add_
而不是add_
来结束。
在这种情况下,我尝试使用方括号并将其写为:
add_id
它部分起作用,现在add_whatever_I_wanted
被括在括号中,扩展结果为
#define bind(id) function[function_id::id] = std::bind(otherFunction::add_(id), std::placeholders::_1)
代替
id
我要经常使用它,这真是杀了我。有什么解决方法吗?