宏“VER”在其他我无法更改的头文件中定义为“((u_long)1)”。如何使用c宏生成函数名称
在我的代码中,我需要使用“test”和VER编写函数“test_1”。 但编译器报告错误,因为它是“test _((u_long)1)”而不是“test_1”生成的。
我的问题是:如何编写宏以便它可以生成“test_1”?
在此先感谢!
#define VER ((u_long)1) /* This is defined in some other header file which I can't change*/
#define paste(x, y, z) x ## y ## z
#define paste2(x, y, z) paste(x, y, z)
#define fcall(fname) paste2(fname, _, VER)
int test_1() {
return 0;
}
int main() {
fcall(test)();
return 0;
}
这个怎么用? –
@brianbeuning我已经添加了解释。 – Angew
这非常酷。但是如果有人改变了VER的定义(比如说(1)),它就会中断。 –