【发布时间】:2017-11-03 00:47:26
【问题描述】:
我正在尝试使用宏定义一个函数,该宏实际上会将现有函数包装到另一个带有前缀的函数中。 比如说:
int f1(int a, void *b, char c) { return 1; }
int f2(void *a) { return 1; }
void f3(void *a, int b) {}
void f4() {}
#define WRAP(prefix, f) // do something
WRAP(a, f1) or WRAP(a,f1,int,void*,char) or WRAP(a,f1,int,a,void*,b,char,c)
这应该产生类似:
int a_f1(int a, void *b, char c);
int a_f1(int a, void *b, char c) { return f1(a,b,c); }
我正在尝试这样做,以便它可以与 f1、f2、f3 或 f4 中的任何一个一起使用。 如果有人知道如何做到这一点,我将非常感激。
【问题讨论】:
-
“生成新的标头”是什么意思?您是否打算重定向预处理器的输出以创建头文件?
-
我的意思是我想要一个新的标题,我可以在所有符号的前缀位置包含它。我的问题的上下文部分令人困惑、不准确且不准确,因此我将其删除。