*
**************************************************************************/
+#include "no_extern_c.h"
+
#ifndef _C99_COMPAT_H_
#define _C99_COMPAT_H_
* MSVC hacks.
*/
#if defined(_MSC_VER)
+
+# if _MSC_VER < 1500
+# error "Microsoft Visual Studio 2008 or higher required"
+# endif
+
/*
* Visual Studio 2012 will complain if we define the `inline` keyword, but
* actually it only supports the keyword on C++.
*
- * We could skip this check by defining _ALLOW_KEYWORD_MACROS, but there is
- * probably value in checking this for other keywords. So simply include
- * the checking before we define it below.
+ * To avoid this the _ALLOW_KEYWORD_MACROS must be set.
*/
-# if _MSC_VER >= 1700
-# include <xkeycheck.h>
+# if (_MSC_VER >= 1700) && !defined(_ALLOW_KEYWORD_MACROS)
+# define _ALLOW_KEYWORD_MACROS
# endif
/*
# elif defined(__SUNPRO_C) && defined(__C99FEATURES__)
/* C99 */
# elif defined(__GNUC__)
-# if __GNUC__ >= 2
-# define __func__ __FUNCTION__
-# else
-# define __func__ "<unknown>"
-# endif
+# define __func__ __FUNCTION__
# elif defined(_MSC_VER)
-# if _MSC_VER >= 1300
-# define __func__ __FUNCTION__
-# else
-# define __func__ "<unknown>"
-# endif
+# define __func__ __FUNCTION__
# else
# define __func__ "<unknown>"
# endif