[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
rpl_memcmp on mingw with g++?
From: |
Simon Josefsson |
Subject: |
rpl_memcmp on mingw with g++? |
Date: |
Tue, 20 May 2008 09:11:16 +0200 |
User-agent: |
Gnus/5.110009 (No Gnus v0.9) Emacs/22.2 (gnu/linux) |
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
address@hidden:~$ cat foo.cpp
#define memcmp rpl_memcmp
#include <iostream>
int main () {
std::cout << "foo\n";
}
address@hidden:~$ 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
address@hidden:~$