[英]is there a way to write macros with a variable argument list in visual C++?
[英]C++ wrapping variable argument macros
我想例如:
#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__
块传递。
与其他任何理智的人一样,我建议您删除宏,尤其是使用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
看起来很可疑,但是...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.