是否可以包含一系列文件:file1,file2,file3
在预处理器循环中?
#include <boost/preprocessor/iteration/local.hpp>
#include <boost/preprocessor/cat.hpp>
// needed whitespace here----*
#define BOOST_PP_LOCAL_LIMITS (1, 3)
#define GENERATE_FILE_NAME(n) \
BOOST_PP_STRINGIZE( BOOST_PP_CAT( file , n) ) \
/**/
#define BOOST_PP_LOCAL_MACRO(n) \
#include GENERATE_FILE_NAME(n) \
然后将其用于:
#include BOOST_PP_LOCAL_ITERATE()
应该扩大到
BOOST_PP_LOCAL_MACRO(1) --> includes file1
BOOST_PP_LOCAL_MACRO(2) --> includes file2
BOOST_PP_LOCAL_MACRO(3) --> includes file3
不幸的是,上述方法不起作用,因为 #include GENERATE_FILE_NAME(n)
宏中没有扩展......
这甚至可能吗?
评论:
我发布这个问题是因为我想知道这是否可能。我通过只包含一个从所有文件生成的文件解决了我的问题file1 file2 file3
。我遇到了这个问题,因为有时可能会生成大的包含文件序列(不应该合并,只是因为可读性)而且我不确定如何在不明确写入所有文件名的情况下包含所有这些文件,所以我想到了预处理器循环,它到目前为止,我的解决方案当然比我的解决方案更丑:-),但它更漂亮:-)