+#endif /* wxVsnprintf_ not defined yet && !wxUSE_PRINTF_POS_PARAMS */
+
+#if !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS
+ /*
+ The systems where vsnprintf() supports positionals should define
+ the HAVE_UNIX98_PRINTF symbol.
+
+ On systems which don't (e.g. Windows) we are forced to use
+ our wxVsnprintf() implementation.
+ */
+ #if defined(HAVE_UNIX98_PRINTF)
+ #if wxUSE_UNICODE
+ #define wxVsnprintf_ vswprintf
+ #else /* ASCII */
+ #if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL
+ #define wxVsnprintf_ wx_fixed_vsnprintf
+ #else
+ #define wxVsnprintf_ vsnprintf
+ #endif
+ #endif
+ #else
+ // the only exception on Windows is VC++ 8.0; it provides a new family
+ // of printf() functions with positional parameter support which should
+ // behave mostly identic to our wxVsnprintf() implementation
+ #if defined(__VISUALC__) && __VISUALC__ >= 1400
+ #if wxUSE_UNICODE
+ #define wxVsnprintf_ _vsprintf_p
+ #else
+ #define wxVsnprintf_ _vswprintf_p
+ #endif
+ #endif
+ #endif
+#endif // !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS