C模板的替代品?
我认为元编程非常酷.特别是,我喜欢lisp宏.
但是,我认为C模板很糟糕,因为: 说了这么多,C元编程有一个不错的选择吗?就像是 * .m – >元编译器 – > * .cpp – > g – >执行? 编辑: 我正在沿着“自定义代码生成脚本”的方向发展. 解决方法
我不确定这应该是什么,我使用代码生成器来生成C代码.
特别是 python猎豹.你基本上在你的C代码中嵌入了直接的python代码并运行cheetah preprocessor.it允许比使用模板或C预处理器更容易地进行相当复杂的计算,而且你得到所有的python库和扩展.另一方面,如果出现问题,它会使调试变得更难.如果您感兴趣,我可以提供一些示例和Emacs模式来编辑猎豹C程序. 如果你需要不那么强大的东西并且想要只留在C C内,请看一下boost预处理器here.它需要一点时间来适应它,但是当涉及重复代码时可能会让生活变得非常简单 好吧,我正在粘贴猎豹的例子,给我几分钟: #if defined (__INTEL_COMPILER) #pragma vector aligned #endif for(int a = 0; a < $N; ++a) { /// for functions in block %for ii,(fi,fj) in enumerate(fb) %set i = ii + ifb /// can also use (ix,iy,iz)=fi[0:2],need to clean up when not lazy %set ix = fi[0] %set iy = fi[1] %set iz = fi[2] %set jx = fj[0] %set jy = fj[1] %set jz = fj[2] q$(i) += Ix(a,$(ix),$(jx))*Iy(a,$(iy),$(jy))*Iz(a,$(iz),$(jz)); %end for /// end for functions in block } 生产(猎豹后……) #if defined (__INTEL_COMPILER) #pragma vector aligned #endif for(int a = 0; a < 6; ++a) { q0 += Ix(a,1)*Iy(a,0)*Iz(a,0); q1 += Ix(a,1,0); q2 += Ix(a,0); q3 += Ix(a,0); q4 += Ix(a,0)*Iy(a,1)*Iz(a,0); q5 += Ix(a,0); q6 += Ix(a,0); q7 += Ix(a,0); q8 += Ix(a,1); q9 += Ix(a,1); } 这是一个常规的C代码 以%开头的行由cheetah预处理器解释为python语句. 你想要使用boost预处理器的例子吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |