我的 C 代码中有两个宏,它们可以帮助我编写某些变量的名称。例如,考虑以下情况:
#define MACROA(name) A_##name
#define MACROB(name) B_##name
void *MACROB(MACROA(object));
所以,我试图声明一个名为B_A_object
. 但是,这不起作用,编译器会向我抛出以下消息:
object.c:27:21: error: a parameter list without types is only allowed in a function definition
void *MACROB(MACROA(object));
^
object.c:26:26: note: expanded from macro 'MACROB'
#define MACROB(name) B_##name
^
因此,预处理器似乎没有获取 的结果MACROA(object)
,但它正在考虑表达式本身,以便尝试生成B_MACROA(object)
。那么,我该怎么做才能让预处理器考虑传递给另一个宏的宏的结果?