Remove spurious token in preprocessor directive.
[bertos.git] / compiler.h
index 1a5d4c0ec1ed9d8cb58b55f5a6ec996c391cd85f..65effeca2b5305d49a7cf6a12bd7f9baeec45a64 100755 (executable)
 
 /*#*
  *#* $Log$
+ *#* Revision 1.27  2004/10/21 10:09:40  bernie
+ *#* Remove spurious token in preprocessor directive.
+ *#*
+ *#* Revision 1.26  2004/10/19 08:55:14  bernie
+ *#* UNUSED_FUNC: New function attribute.
+ *#*
+ *#* Revision 1.25  2004/10/19 07:14:20  bernie
+ *#* Add macros to test for specific compiler features.
+ *#*
  *#* Revision 1.24  2004/10/03 18:35:13  bernie
  *#* Poison C++ keywords in C programs for better portability.
  *#*
 
 #elif defined(__GNUC__)
 
+       /* Compiler features */
+       #define COMPILER_VARIADIC_MACROS 1 /* Even in C++ */
+       #define COMPILER_TYPEOF 1
+       #define COMPILER_STAEMENT_EXPRESSIONS 1
+
        /* GCC attributes */
        #define FORMAT(type,fmt,first)  __attribute__((__format__(type, fmt, first)))
        #define NORETURN                __attribute__((__noreturn__))
        #define UNLIKELY(x)             __builtin_expect(!!(x), 0)
        #define PURE_FUNC               __attribute__((pure))
        #define CONST_FUNC              __attribute__((const))
+       #define UNUSED_FUNC             __attribute__((unused))
        #define RESTRICT                __restrict__
        #define MUST_CHECK              __attribute__((warn_unused_result))
        #if GNUC_PREREQ(3,1)
 
 #elif defined(__MWERKS__) && CPU_DSP56K
 
+       /* Compiler features */
+       #define COMPILER_TYPEOF 1
+       #define COMPILER_STAEMENT_EXPRESSIONS 1
+
        #include <stdint.h>
        #include <stddef.h>
        #include <stdbool.h>
 #endif
 
 
+/* Defaults for compiler extensions. */
+
+/*!
+ * \def COMPILER_VARIADIC_MACROS
+ * Support for macros with variable arguments.
+ */
+#ifndef COMPILER_HAVE_VARIADIC_MACROS
+#define COMPILER_HAVE_VARIADIC_MACROS (COMPILER_C99 != 0)
+#endif
+
+/*!
+ * \def COMPILER_TYPEOF
+ * Support for macros with variable arguments.
+ */
+#ifndef COMPILER_TYPEOF
+#define COMPILER_TYPEOF 0
+#endif
+
+/*!
+ * \def COMPILER_STATEMENT_EXPRESSIONS
+ * Support for macros with variable arguments.
+ */
+#ifndef COMPILER_STATEMENT_EXPRESSIONS
+#define COMPILER_STATEMENT_EXPRESSIONS 0
+#endif
+
 /* A few defaults for missing compiler features. */
 #ifndef INLINE
 #define INLINE                 static inline
 #ifndef CONST_FUNC
 #define CONST_FUNC             /* nothing */
 #endif
+#ifndef UNUSED_FUNC
+#define UNUSED_FUNC            /* nothing */
+#endif
 #ifndef RESTRICT
 #define RESTRICT               /* nothing */
 #endif