Buildable with MS Compiler version >= 1900

This commit is contained in:
OlehKulykov 2015-08-31 23:43:29 +02:00
parent 4c4f692bd6
commit 8f2298bad8
2 changed files with 27 additions and 3 deletions

View File

@ -49,6 +49,20 @@
#cmakedefine HAVE_SNPRINTF 1 #cmakedefine HAVE_SNPRINTF 1
/* snprintf should not be defined as macro with MSC_VER >= 1900 */
#if defined(_WIN32) || defined(WIN32)
# if defined(_MSC_VER) /* MS compiller */
# if (_MSC_VER < 1900) /* snprintf not introduced */
# if !defined(snprintf)
# define snprintf _snprintf
# define HAVE_SNPRINTF 1 /* snprintf defined manually */
# endif
# else
# define HAVE_SNPRINTF 1 /* snprintf available via sdk */
# endif
# endif
#endif
#ifndef HAVE_SNPRINTF #ifndef HAVE_SNPRINTF
# define snprintf @JSON_SNPRINTF@ # define snprintf @JSON_SNPRINTF@
#endif #endif

View File

@ -90,10 +90,20 @@ char *jsonp_strndup(const char *str, size_t length);
char *jsonp_strdup(const char *str); char *jsonp_strdup(const char *str);
char *jsonp_strndup(const char *str, size_t len); char *jsonp_strndup(const char *str, size_t len);
/* Windows compatibility */ /* Windows compatibility */
#ifdef _WIN32 #if defined(_WIN32) || defined(WIN32)
#define snprintf _snprintf # if defined(_MSC_VER) /* MS compiller */
#define vsnprintf _vsnprintf # if (_MSC_VER < 1900) && !defined(snprintf) /* snprintf not defined yet & not introduced */
# define snprintf _snprintf
# endif
# if (_MSC_VER < 1500) && !defined(vsnprintf) /* vsnprintf not defined yet & not introduced */
# define vsnprintf(b,c,f,a) _vsnprintf(b,c,f,a)
# endif
# else /* Other Windows compiller, old definition */
# define snprintf _snprintf
# define vsnprintf _vsnprintf
# endif
#endif #endif
#endif #endif