// window id is unsigned, so we must always do the cast before comparing them
// (or else they would be always different!). Usign wxGetWindowId() which does
// the cast itself is recommended. Note that this type can't be unsigned
-// because -1 is a valid (and largely used) value for window id.
+// because wxID_ANY == -1 is a valid (and largely used) value for window id.
typedef int wxWindowID;
// ----------------------------------------------------------------------------
#define wxUSE_NESTED_CLASSES 0
#endif
+// check for explicit keyword support
+#ifndef HAVE_EXPLICIT
+ // VC++ 6.0 has explicit (what about the earlier versions?)
+ #if defined(__VISUALC__) && (__VISUALC__ > 1200)
+ #define HAVE_EXPLICIT
+ // Metrowerks CW6 or higher has explicit
+ #elif defined(__MWERKS__) && (__MWERKS__ >= 0x2400)
+ #define HAVE_EXPLICIT
+ #endif
+#endif // !HAVE_EXPLICIT
+
+#ifdef HAVE_EXPLICIT
+ #define wxEXPLICIT explicit
+#else // !HAVE_EXPLICIT
+ #define wxEXPLICIT
+#endif // HAVE_EXPLICIT/!HAVE_EXPLICIT
+
// ----------------------------------------------------------------------------
// portable calling conventions macros
// ----------------------------------------------------------------------------
#endif
// Printf-like attribute definitions to obtain warnings with GNU C/C++
-#if defined(__GNUC__)
+#if defined(__GNUC__) && !wxUSE_UNICODE
# ifndef ATTRIBUTE_PRINTF
# define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
# define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)