Boost logo

Boost Users :

Subject: Re: [Boost-users] [Preprocessor] Relative Addresses in BOOST_PP_FILENAME_1
From: TONGARI (tongari95_at_[hidden])
Date: 2011-01-25 00:58:31


2011/1/25 Hossein Haeri <powerprogman_at_[hidden]>

> 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..."



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net