我需要一个宏/模板化函数,它将某些方法的函数调用包装在特定对象上,即
a.Destroy()
其中a可以是任何类型以及Destroy和Destroy可能会也可能不会采用0到n个参数。在这个包装器里面,我需要做一些检查。
我希望能够将此函数称为包装器:
DESTROY_CHECK(a.Destroy(p1,p2,...))
或
DESTROY_CHECK(a, Destroy(p1,p2,...))
我怎样才能做到这一点?
答案 0 :(得分:0)
您可以考虑variadic macro:
#define identifier( parameters, ... ) replacement-list
...定义一个具有可变数量参数的类函数宏。可以使用
__VA_ARGS__
标识符访问其他参数,然后将其替换为带有要替换的标识符的参数。
#define DESTROY_CHECK(x, ...) assert(x.Destroy(__VA_ARGS__))