# if __GNUC__ < 3
# error Time to upgrade. GNU compilers < 3.0 not supported
# elif (__GNUC__ == 3) && (__GNUC_MINOR__ < 4)
-# warning GCC compilers prior to 3.4 are suspect
+# warning GCC compilers prior to 3.4 are suspect
# endif
+# define SG_GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
# define SG_COMPILER_STR "GNU C++ version " SG_STRINGIZE(__GNUC__) "." SG_STRINGIZE(__GNUC_MINOR__)
#endif // __GNUC__
#ifdef _MSC_VER
# define bcopy(from, to, n) memcpy(to, from, n)
-# if _MSC_VER >= 1200 // msvc++ 6.0 or greater
-# define isnan _isnan
-# define snprintf _snprintf
+# if _MSC_VER >= 1200 // msvc++ 6.0 up to MSVC2013
+# if _MSC_VER < 1900
+# define snprintf _snprintf
+# define strdup _strdup
+# endif
+# if _MSC_VER < 1800
+# define isnan _isnan
+# endif
# if _MSC_VER < 1500
# define vsnprintf _vsnprintf
# endif
# pragma warning(disable: 4786) // identifier was truncated to '255' characters
# pragma warning(disable: 4244) // conversion from double to float
-# pragma warning(disable: 4305) //
+# pragma warning(disable: 4305) // truncation from larer type to smaller
# else
# error What version of MSVC++ is this?
# define SG_UNIX
#endif
+#if defined( __GNUC__ )
+# define DEPRECATED __attribute__ ((deprecated))
+#else
+# define DEPRECATED
+#endif
+
+#if defined(__clang__)
+# define SG_NO_RETURN [[noreturn]]
+#else
+# define SG_NO_RETURN
+#endif
+
//
// No user modifiable definitions beyond here.
//
#endif // _SG_COMPILER_H
-