通过上面几篇文章,我们已经初步了解了pp库的作用。然而我们在实际编程中,肯定会碰到一些较为复杂的问题,这就要求我们要学会使用pp库的在线文档(请访问
boost.org来搜索pp库的电子文档)。
比如,我们很有可能遇到多重嵌套循环的需求,然而宏语言对于这些我们平时司空见惯的编程逻辑还能力有限。下面我们来看一个2层深度的嵌套样例:
#ifndef BOOST_PP_IS_ITERATING
// we are in normal file
#include <boost/preprocessor/iteration/iterate.hpp>
#define M 3
#define BOOST_PP_ITERATION_LIMITS (1,M)
#define BOOST_PP_FILENAME_1 "test.cpp"
#include BOOST_PP_ITERATE()
#else // now we are in loop
// get d = depth of current loop
// get n = index of current loop
#define d BOOST_PP_ITERATION_DEPTH()
#define n BOOST_PP_ITERATION()
#if d == 1 // depth 1 loop
void BOOST_PP_CAT(foo, n) ()
{
#define BOOST_PP_ITERATION_LIMITS (1,n)