On 27/03/2009 18:07, Ghee Teo wrote:
> On 03/27/09 17:51, Christian Thalinger wrote:
>> On Fri, 2009-03-27 at 17:35 +0000, Ghee Teo wrote:
>>    
>>> Hi,
>>>
>>> I am working on patches that get the compiler to conditional include or
>>> exclude the OpenSolaris specific bit of code.
>>> I have seen upstream code that used
>>>
>>> #if defined(__sun__)
>>> ...
>>> #endif
>>>
>>> But that does not work for CBE when I build them.
>>>
>>> I have to use
>>>
>>> #if defined(sun)
>>> ...
>>> #endif
>>>
>>> So what is the right macros to use that work both down stream and upstream?
>>> Where are they defined, any idea?
>>>      
>> These macros are usually defined by the compiler itself, or more
>> specifically by the preprocessor.  I don't know of a way to find out the
>> preprocessor defines for SunCC, but I know how to do it with GCC:
>>
>> $ cpp -dM /dev/null
>>
>> Maybe someone else knows how to print them with SunCC...
>>    
> May be I am wrong, I got
>   cpp -dM /dev/null | grep sun
> #define __sun 1
> #define sun 1
> #define __sun__ 1
> bash-3.2$ which cc
> /export/home/gheet/compiler/onnv-tools/i386/SS11/bin/cc
> 
> so it seems to be all defined. Let me investigate a bit more.
> Thanks,


Ah, but that's the /usr/sfw/bin/cpp most likely - the GNU CPP - so that's why
that works as expected - you need to be looking at /usr/lib/cpp if using the
SunCC compiler.

Darren.

Reply via email to