我想做的例如:
#define macro(a) foo( _blah_, *(dword*)(&a) );
#define macro(a,b) foo( _blah_, *(dword*)(&a) , *(dword*)(&b) );
#define macro(a,b,c) foo( _blah_, *(dword*)(&a) , *(dword*)(&b) , *(dword*)(&c) );
但当然变量没有。论点。我基本上想要单独包装每个参数,而不是将所有参数作为一个__VA_ARGS__
块传递。
答案 0 :(得分:3)
与其他任何理智的人一样,我建议你删除宏,特别是使用C ++ 11的可变参数模板:
template<class T>
dword& make_dword(T& v){
return *reinterpret_cast<dword*>(&v);
}
template<class... Args>
void bar(Args&... args){
foo(_blah_, make_dword(args)...);
}
这应该可以解决问题。
我需要提一下,reinterpret_cast
看起来很可疑,但是......