All, MinGW apparently needs gnulib's memcmp module, which adds this to config.h:
#define memcmp rpl_memcmp This appears to cause problems for the standard C++ headers, see complete error below. What is a good solution here? Is there another way to replace memcmp that is safer? Should the C++ code not include config.h? (The real case is a GnuTLS example program written in C++, but it fails in the same way as the smaller example below.) Thanks, /Simon [EMAIL PROTECTED]:~$ cat foo.cpp #define memcmp rpl_memcmp #include <iostream> int main () { std::cout << "foo\n"; } [EMAIL PROTECTED]:~$ i586-mingw32msvc-g++ -o foo foo.cpp In file included from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/i586-mingw32msvc/bits/c++locale.h:48, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/iosfwd:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ios:43, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ostream:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/iostream:45, from foo.cpp:2: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/cstring:86: error: ‘::memcmp’ has not been declared In file included from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/char_traits.h:46, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ios:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ostream:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/iostream:45, from foo.cpp:2: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/stl_algobase.h: In function ‘bool std::lexicographical_compare(const unsigned char*, const unsigned char*, const unsigned char*, const unsigned char*)’: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/stl_algobase.h:908: error: ‘memcmp’ is not a member of ‘std’ In file included from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ios:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ostream:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/iostream:45, from foo.cpp:2: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/char_traits.h: In static member function ‘static int std::char_traits<char>::compare(const char*, const char*, size_t)’: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/char_traits.h:254: error: ‘memcmp’ was not declared in this scope In file included from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/basic_ios.h:44, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ios:50, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/ostream:45, from /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/iostream:45, from foo.cpp:2: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/locale_facets.h: In member function ‘void std::ctype<char>::_M_widen_init() const’: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/locale_facets.h:1168: error: ‘memcmp’ was not declared in this scope /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/locale_facets.h: In member function ‘void std::ctype<char>::_M_narrow_init() const’: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/include/c++/bits/locale_facets.h:1183: error: ‘memcmp’ was not declared in this scope [EMAIL PROTECTED]:~$