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