X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcfg%2Fcompiler.h;h=3426cd06e0bae5733a6eb114f3331fd5d7f8eaa8;hb=0d4c0c64f736f37dba565aa9e113d3920ef905f9;hp=82bd6dbb90bbeed5b7044e56dccd0ba905235e02;hpb=2302be36b228a46292a3f4eae649f5e29bd9999c;p=bertos.git diff --git a/bertos/cfg/compiler.h b/bertos/cfg/compiler.h index 82bd6dbb..3426cd06 100644 --- a/bertos/cfg/compiler.h +++ b/bertos/cfg/compiler.h @@ -33,7 +33,6 @@ * * \brief Additional support macros for compiler independance * - * \version $Id$ * \author Bernie Innocenti */ @@ -74,6 +73,30 @@ #define PP_STRINGIZE__(x) #x +/** + */ +#if COMPILER_C99 + #define COUNT_PARMS2(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _, ...) _ + #define COUNT_PARMS(...) \ + COUNT_PARMS2(11 , ## __VA_ARGS__, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + + /** + * usage: + * #define foo_init(...) PP_CAT(foo_init_, COUNT_PARMS(__VA_ARGS__)) (__VA_ARGS__) + */ + +#else + #define COUNT_PARMS2(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _, ...) _ + #define COUNT_PARMS(args...) \ + COUNT_PARMS2(11 , ## args, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) + + /** + * usage: + * #define foo_init(args...) PP_CAT(foo_init_, COUNT_PARMS(args)) (args) + */ + +#endif + #if defined(__IAR_SYSTEMS_ICC) || defined(__IAR_SYSTEMS_ICC__) #pragma language=extended @@ -172,6 +195,7 @@ #define UNUSED_VAR(type,name) __attribute__((__unused__)) type name #define USED_VAR(type,name) __attribute__((__used__)) type name #define INLINE static inline __attribute__((__always_inline__)) + #define NOINLINE __attribute__((noinline)) #define LIKELY(x) __builtin_expect(!!(x), 1) #define UNLIKELY(x) __builtin_expect(!!(x), 0) #define PURE_FUNC __attribute__((pure)) @@ -281,6 +305,9 @@ #ifndef INLINE #define INLINE static inline #endif +#ifndef NOINLINE +#define NOINLINE /* nothing */ +#endif #ifndef NORETURN #define NORETURN /* nothing */ #endif