繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM