g++ defines for win32

Angel Tsankov fn42551@fmi.uni-sofia.bg
Sun Aug 14 07:28:00 GMT 2005


It seems I've come upon an interesting issue, probably a bug. Here it 
is:
I have a header file that defines __stdcall, __fastdecl and __cdecl. 
If the preprocessor uses the CPLUS_INCLUDE_PATH to find that header 
file, then it does not issue a warning saying that any of the above 
identifiers has been redefined. If, however, it does not use that 
environment variable, then it DOES issue the warning.

Angel Tsankov
fn42551@fmi.uni-sofia.bg

----- Original Message ----- 
From: "Chan Kar Heng" <karheng@softhome.net>
To: "cygwin mailing list" <cygwin@cygwin.com>
Sent: Sunday, August 14, 2005 9:46 AM
Subject: Re: g++ defines for win32


> another way:
>
> echo "#include <stdio.h>" | gcc -dM -E -
>
> ... but this only shows macros defined for the current target 
> platform unlike -dumpspecs which shows everything.
> (in the above, the include file used could be removed, or other 
> files could be specified instead).
>
> rgds,
>
> kh
>
> Gerrit P. Haase wrote:
>> Angel Tsankov wrote:
>>
>>> I downloaded g++ from cygwin and installed it. I noticed that it 
>>> has built-in definitions of __stdcall, __cdecl and __fastcall. 
>>> I've come across other g++ builds for Windows that do not have 
>>> definitions for these identifiers, so I had to filter them out 
>>> from my source code with the help of macros. Now I need to know 
>>> how to distinguish this build of g++ from others in order to not 
>>> filter the above identifiers out.
>>> Here's what I have now:
>>>
>>> #if !(defined (_MSC_VER) || (defined (__GNUC__) && defined 
>>> (__WIN32__)))
>>> #define __cdecl
>>> #define __stdcall
>>> #define __fastcall
>>> #endif
>>
>>
>> gcc -dumpspecs:
>>
>>
>> *cpp:
>> %(cpp_cpu) %{posix:-D_POSIX_SOURCE}   %{mno-win32:%{mno-cygwin: 
>> %emno-cygwin and mno-win32 are not compatible}} 
>> %{mno-cygwin:-D__MSVCRT__ -D__MINGW32__ %{!ansi:%{mthreads:-D_MT}}} 
>> %{!mno-cygwin:-D__CYGWIN32__ -D__CYGWIN__ 
>> %{!ansi:-Dunix} -D__unix__ -D__unix } 
>>  %{mwin32|mno-cygwin:-DWIN32 -D_WIN32 -D__WIN32 -D__WIN32__ 
>> %{!ansi:-DWINNT}}  %{!nostdinc:%{!mno-win32|mno-cygwin:-idirafter 
>> ../include/w32api%s -idirafter ../../include/w32api%s}}
>>
>>
>> For Cygwin (= -mno-win32 = default):
>> __CYGWIN32__
>> __CYGWIN__
>> __unix
>> __unix__
>> unix
>>
>> For MinGW (= -mno-cygwin):
>> __MINGW32__
>> __MSVCRT__
>> WIN32
>> _WIN32
>> __WIN32
>> __WIN32__
>>
>> For Cygwin (+ -mwin32):
>> __CYGWIN32__
>> __CYGWIN__
>> WIN32
>> _WIN32
>> __WIN32
>> __WIN32__
>>
>>
>>
>> Gerrit
>
> --
> Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
> Problem reports:       http://cygwin.com/problems.html
> Documentation:         http://cygwin.com/docs.html
> FAQ:                   http://cygwin.com/faq/
>
> 


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list