Boost logo

Boost :

From: Marshall Clow (marshall_at_[hidden])
Date: 2005-02-20 22:57:39


In boost/libs/python/src/converter/registry.cpp, I found:

>#if defined(__APPLE__) && defined(__MACH__) && defined(__GNUC__) \
> && __GNUC__ == 3 && __GNUC_MINOR__ <= 4 && !defined(__APPLE_CC__)
># define BOOST_PYTHON_CONVERTER_REGISTRY_APPLE_MACH_WORKAROUND
>#endif

I have no idea what defining that big long symbol does, but I think
that the conditionals
are incorrect.

<http://developer.apple.com/technotes/tn2002/tn2071.html> says:
        __APPLE__ This macro is defined in any Apple computer.
        __MACH__ This macro is defined if Mach system calls
are supported.
        __APPLE_CC__ This macro is set to an integer that
represents the version number of the compiler. This lets you
distinguish, for example, between compilers based on the same version
of GCC, but with different bug fixes or features. Larger values
denote later compilers.

I can't see any case where __APPLE__ and __GNUC__ are defined, and
__APPLE_CC__ is not defined.

Metrowerks? ==> No __GNUC__
Not on a Mac? ==> No __APPLE__

__APPLE_CC__ was defined for Apple-released versions of GCC,
starting with 2.95.2 (so says Chris Espinosa at Apple). More
historical info is at
<http://developer.apple.com/releasenotes/DeveloperTools/GCC2.html>

So, I think that that whole #if expression always evaluates to "false".

-- 
-- Marshall
Marshall Clow     Idio Software   <mailto:marshall_at_[hidden]>
It is by caffeine alone I set my mind in motion.
It is by the beans of Java that thoughts acquire speed,
the hands acquire shaking, the shaking becomes a warning.
It is by caffeine alone I set my mind in motion.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk