从宏参数生成标识符

时间:2018-09-14 22:33:43

标签: c++ macros c-preprocessor

我有一个宏,我在其中传递了一个参数:

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

我要经常使用它,这真是杀了我。有什么解决方法吗?

0 个答案:

没有答案