
2011/1/25 Hossein Haeri <powerprogman@yahoo.com>
Dear TONGARI,
Where I said <> I meant <something in compiler's include path>, that works fine, just as Edward and Steven said.
Well, my working directory is already in my compiler's include path. And, inside Header.hpp, the following line
#define BOOST_PP_FILENAME1 <Header.hpp>
Shouldn't it be #define BOOST_PP_FILENAME_1 <Header.hpp> ? Maybe it's better that you tell me what you'd be writing instead of the line
above if it would have been you...
For example, suppose I have a lib called "Lib" that contains a header called "A.hpp" which includes "A_n_iteration.hpp" placed in the "detail" folder, I usually do: /* in A.hpp */ #include <Lib/detail/A_n_iteration.hpp> /* in A_n_iteration.hpp */ #if !BOOST_PP_IS_ITERATING #define BOOST_PP_ITERATION_LIMITS (0, SOME_LIMIT) /***/ #define BOOST_PP_FILENAME_1 <Lib/detail/A_n_iteration.hpp> /***/ #include BOOST_PP_ITERATE() #else // iterating // THE CODE TO ITERATE.... #endif That's all. Just make sure "Lib" is in the include path, then everything works fine for me.
If this is not a bug with a specific compiler, I hope at least it should
be noted in Boost.PP's doc.
It's not. Both quote and angle brackets are mentioned to work in the specs:
http://www.boost.org/doc/libs/1_45_0/libs/preprocessor/doc/ref/filename_x.ht...
It would be fine in the Remarks section to add words like: "quoted filename may not work with some compilers here, such as gcc..."