大佬教程收集整理的这篇文章主要介绍了C/C++中的自展开宏循环,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我想,而不是手动展开循环与副本&粘贴我可以使用宏在编译时展开循环,以便稍后可以轻松修改.
我的形象是这样的:
#define LOOP_N_TIMES(N,CODE) <insert magic here>
@R_540_9447@替换(int i = 0; i< N,i){do_stuff();用:
#define INNER_LOOP_COUNT 4 LOOP_N_TIMES(INNER_LOOP_COUNT,do_stuff();)
它展开自己:
do_stuff(); do_stuff(); do_stuff(); do_stuff();
由于C预处理器在大多数情况下对我来说仍然是一个谜,所以我不知道如何完成这个任务,但是我知道这一点可能是因为Boost似乎有一个BOOST_PP_REPEAT宏.不幸的是,我无法使用Boost进行此项目.
但-funroll-loops
has the same effect for this sample.
template <unsigned N> struct faux_unroll { template <typename F> static void call(F const& f) { f(); faux_unroll<N-1>::call(f); } }; template <> struct faux_unroll<0u> { template <typename F> static void call(F const&) {} }; #include <iostream> #include <cstdlib> int main() { srand(time(0)); double r = 0; faux_unroll<10>::call([&] { r += 1.0/rand(); }); std::cout << r; }
以上是大佬教程为你收集整理的C/C++中的自展开宏循环全部内容,希望文章能够帮你解决C/C++中的自展开宏循环所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。