C++包装变量参数宏
例如,我想做:
#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) );
但是当然有变量 no。的论点。我本质上想单独包装每个参数,而不是将所有参数作为一个 __VA_ARGS__ 块传递。
I want to do for example:
#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) );
But of course with variable no. of arguments. I essentially want to wrap each argument indiviudally, not pass all the arguments as one __VA_ARGS__
block.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
与任何其他理智的人一样,我建议您放弃宏,尤其是使用 C++11 的可变参数模板:
这应该可以解决问题。
我需要提一下,那些
reinterpret_cast
看起来很可疑,但......As any other sane person, I advise you to drop the macros, especially with C++11's variadic templates:
This should do the trick.
I need to mention that those
reinterpret_cast
s look pretty dubious, though...