On 10 March 2014 11:39, Corinna Vinschen wrote: > On Mar 10 10:11, Václav Zeman wrote: >> On 7 March 2014 21:08, Corinna Vinschen wrote: >> > On Mar 7 17:04, Václav Zeman wrote: >> >> Hi. >> >> >> >> This bit from /usr/include/stdlib.h hides the `strtold()` function >> >> even though the `strtold` symbol appears to be exported from >> >> `cygwin1.dll`: >> >> >> >> ~~~~{.c} >> >> /* On platforms where long double equals double. */ >> >> #ifdef _LDBL_EQ_DBL >> >> #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L) || >> >> (__cplusplus >= 201103L) >> >> extern long double strtold (const char *__restrict, char **__restrict); >> >> #endif >> >> #endif /* _LDBL_EQ_DBL */ >> >> ~~~~ >> >> >> >> This in turn breaks my source because I cannot use `_GLIBCXX_USE_C99` >> >> to expose some C++11 features like `std::vsnprintf()`. >> >> >> >> Shouldn't the `_LDBL_EQ_DBL` guard be removed and the function exposed >> >> regardless of `double` and `long double` sizes? >> > >> > I fixed that in newlib after a discussion with my co-maintainer. >> > strtold now gets defined if _HAVE_LONG_DOUBLE is defined. This is >> > the case for Cygwin, for instance. >> >> I think that similar fix needs to be applied to `wchar.h` and `wcstold()`. > > Not yet. Newlib doesn't provide wcstold, only wcstod.
I see this in `/usr/include/wchar.h`: ~~~~{.c} /* On platforms where long double equals double. */ #ifdef _LDBL_EQ_DBL long double _EXFUN(wcstold, (const wchar_t *, wchar_t **)); #endif /* _LDBL_EQ_DBL */ ~~~~ -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple