C++ program only compiles if -mno-cygwin specified

Christopher Faylor cgf-no-personal-reply-please@cygwin.com
Fri Jul 14 23:36:00 GMT 2006


On Fri, Jul 14, 2006 at 10:55:22PM +0200, Eric Lilja wrote:
>Hello, I'm using a fully updated cygwin and it seems that it puts macros 
>named BIG_ENDIAN and LITTLE_ENDIAN into global scope if include <stdio.h> 
>(or <cstdio>). If the program is compiled with -mno-cygwin, these macros are 
>not present. This prevented me from compiling a third party library 
>out-of-the-box. Here's a condensed test case that will only compile in 
>MinGW-mode:
>#include <cstdio>
>
>int
>main()
>{
>   enum TArch1 {LITTLE_ENDIAN};
>   enum TArch2 {BIG_ENDIAN};
>}
>
>Maybe these macros need not to be in global scope for cygwin to function or 
>maybe I can do something else and still compile the third party library 
>under cygwin without editing the library code?

There is no way to change this behavior other than in source code.

Cygwin's stdio.h includes sys/types.h which defines these values.  The
stdio header file from glibc does not include sys/types.h.  If it did,
you'd have the same problem.

sed -pi.bak -e 's/LITTLE_ENDIAN/MY_LITTLE_ENDIAN/g' *.[ch]

cgf

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