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.html
It would be fine in the Remarks section to add words like:
"quoted filename may not work with some compilers here, such as gcc..."