-/* A few defaults for missing compiler features. */
-#define INLINE static inline
-#define NORETURN /* nothing */
-#define FORMAT(type,fmt,first) /* nothing */
-#define DEPRECATED /* nothing */
-#define UNUSED(type,arg) type arg
-#define REGISTER /* nothing */
-#define INTERRUPT(x) ERROR_NOT_IMPLEMENTED
+#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
+ #define COMPILER_C99 1
+#else
+ #define COMPILER_C99 0
+#endif
+
+
+/*! Concatenate two different preprocessor tokens (allowing macros to expand) */
+#define PP_CAT(x,y) PP_CAT__(x,y)
+#define PP_CAT__(x,y) x ## y
+#define PP_CAT3(x,y,z) PP_CAT(PP_CAT(x,y),z)
+#define PP_CAT4(x,y,z,w) PP_CAT(PP_CAT3(x,y,z),w)
+#define PP_CAT5(x,y,z,w,j) PP_CAT(PP_CAT4(x,y,z,w),j)
+
+/*! String-ize a token (allowing macros to expand) */
+#define PP_STRINGIZE(x) PP_STRINGIZE__(x)
+#define PP_STRINGIZE__(x) #x