|
Boost : |
Subject: Re: [boost] [config] Boost PP and variadic macros
From: John Maddock (boost.regex_at_[hidden])
Date: 2011-04-03 14:01:15
>>> [...] My initial thought was to see if config could work with C
>>> compilers, but all investigation there has led me to believe that it
>>> would be too many unnecessary changes to config, would complicate
>>> config greatly, would need extensive testing against all compilers,
>>> and that since config is central to all of Boost such a potential
>>> massive change to it it is a bad idea. [...]
>>
>> What about simply wrapping everything in config, except the varadic
>> stuff, in an "#ifdef __cplusplus"?
>
> That was the original thought. But it would mean testing each
> compiler/version to make sure that __cplusplus was actually being set when
> compiling a C++ program.
__cplusplus is absolutely required to be set for C++ compilation, I've never
heard of a compiler that doesn't set it in C++ mode.
>> It would be an unobtrusive change,
>> and that define is required by every C++ standard I've seen (note: I've
>> only seen working drafts, not the final copies, though I don't expect
>> that part has changed).
>
> It might be unobtrusive but there are very many config header files in
> which one would have to do that. Even doing it just for each compiler's
> header file would mean that each compiler would have to be tested which
> config supports. I do not think we even have every compiler which config
> supports being tested regularly, but I may be wrong.
True enough, but there weren't many changes required: try SVN Trunk now,
Boost.Config should compile in C mode as well as C++ mode now. Tested
locally with msvc, gcc (all the versions I could find!), intel and sun.
I've also added a C-language test case, and manually inspected the compiler
and platform config files for C++ specific code. Lets see how that works
out...
HTH, John.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk