From: Václav Slavík Date: Mon, 12 Aug 2002 11:10:39 +0000 (+0000) Subject: fixed wxChar definition X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/02a775c98e06729e5bdcd7c7bd27b44fe7a83d24 fixed wxChar definition git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 21afa7f864..2a332e3901 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -322,9 +322,27 @@ typedef _TUCHAR wxUChar; // this is probably glibc-specific # if defined(__WCHAR_TYPE__) -typedef __WCHAR_TYPE__ wxChar; -typedef signed __WCHAR_TYPE__ wxSChar; -typedef unsigned __WCHAR_TYPE__ wxUChar; +// VS: wxWindows used to define wxChar as __WCHAR_TYPE__ here. However, this doesn't +// work with new GCC 3.x compilers because wchar_t is C++'s builtin type in the new +// standard. OTOH, old compilers (GCC 2.x) won't accept new definition +// of wx{S,U}Char, therefore we have to define wxChar conditionally depending on +// detected compiler & compiler version. +// The most complicated case is the infamous so-called "gcc-2.96" which does not +// accept new definition of wxSChar but doesn't work with old definition of wxChar. +#if defined(__GNUC__) && (__GNUC__ >= 3) + // modern C++ compiler + typedef wchar_t wxChar; + typedef signed wchar_t wxSChar; + typedef unsigned wchar_t wxUChar; +#else + #if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96) + typedef wchar_t wxChar; + #else + typedef __WCHAR_TYPE__ wxChar; + #endif + typedef signed __WCHAR_TYPE__ wxSChar; + typedef unsigned __WCHAR_TYPE__ wxUChar; +#endif # define _T(x) L##x