Building with -std=c++0x causes __STRICT_ANSI__ to be defined. The new C++ headers expect the system C headers (ctype.h, stdio.h, etc.,) to declare certain functions (isblank(), snprintf(), etc.) that are part of C++0x. The system C headers that are part of cygwin aren't privy to this. The result is that simple programs like the following to not compile with -std=c++0x on a stock cygwin install.
#include <iostream> int main() {} The error is: In file included from /usr/local/gcc-4.3-20071030/lib/gcc/i686-pc-cygwin/4.3.0/../../../../include/c ++/4.3.0/cctype:98, from /usr/local/gcc-4.3-20071030/lib/gcc/i686-pc-cygwin/4.3.0/../../../../include/c ++/4.3.0/bits/localefwd.h:49, from /usr/local/gcc-4.3-20071030/lib/gcc/i686-pc-cygwin/4.3.0/../../../../include/c ++/4.3.0/ios:47, from /usr/local/gcc-4.3-20071030/lib/gcc/i686-pc-cygwin/4.3.0/../../../../include/c ++/4.3.0/ostream:45, from /usr/local/gcc-4.3-20071030/lib/gcc/i686-pc-cygwin/4.3.0/../../../../include/c ++/4.3.0/iostream:45, from main.cpp:1: /usr/local/gcc-4.3-20071030/lib/gcc/i686-pc-cygwin/4.3.0/../../../../include/c++/4.3.0/tr1_impl/ccty pe:43: error: '::isblank' has not been declared For another example, the following program also does not compile on cygwin with -std=c++0x: #include <cstdio> int main() { char buf[50]; snprintf(buf, 50, "hello"); } main.cpp: In function 'int main()': main.cpp:6: error: 'snprintf' was not declared in this scope This is with a stock g++ built on cygwin from latest source from svn, configured with "--prefix=/usr/local/g++-4.3 --enable-languages=c,c++". -- Summary: -std=c++0x causes undeclared symbols errors on cygwin Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: eric dot niebler at gmail dot com GCC host triplet: cygwin http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34032