3

ファイルのシーケンスを含めることは可能ですか: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)マクロが展開されないため、上記は機能しません...

これは可能ですか?

コメント:
これが可能かどうか疑問に思っていたので、この質問を投稿しました。すべてのファイルから生成されたファイルを 1 つだけ含めることで問題を解決しましたfile1 file2 file3。これに遭遇したのは、大きなインクルード ファイル シーケンスが生成される場合があり (これは読みやすさのためにマージされるべきではありません)、すべてのファイル名を明示的に記述せずにそれらすべてをインクルードする方法がわからないため、プリプロセッサ ループについて考えました。もちろん、これまでの私のソリューションよりも醜いです:-)、しかしその手の込んだものです:-)

4

1 に答える 1