On Jun 22 10:01, Warren Young wrote: > On Jun 22, 2016, at 9:36 AM, Corinna Vinschen wrote: > > > >> 64-bit Windows is LLP64, while 64-bit Linux is LP64 on the same hardware. > > > > s/Linux/Linux and Cygwin/ > > Well, that was unexpected. The FAQ entry is just as old as the first 64 bit release... > Still, you could get similar problems. ifdefs for portable > sized-integer types are a particularly rich source of bugs, especially > ones where #ifdef WINDOWS precedes any test that could match Cygwin, > since WINDOWS is defined in Cygwin’s GCC, and as this exchange shows, No, it isn't. Neither is _WIN32 or _WINNT_, unless you include . Try `gcc -dM -E - < /dev/null | grep WIN' > Cygwin’s GCC doesn’t always behave exactly the same as Visual C++. > > Any such case will compile under Cygwin. You need to reorder such > cases so a the test for WINDOWS is after one matching Cygwin, as a > rule. Varargs functions are fun. A type mismatch int/long in the 5th and 6th arg would be invisible on Linux but potentially crash on Cygwin due to the ABI difference (MS vs. SysV). We found a bug in OpenLDAP this way. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat