X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=compiler.h;h=dd7a5b88dbf44df8ade9998dc086c1fa2516c9ff;hb=02f74387ee455ffc90f4d7ebab708959fd32352d;hp=ebbfa4e128a345fa6d81096f77ad870a524a47c2;hpb=73234ad0e88035387cc355ca42ba66c63fd50ed1;p=bertos.git diff --git a/compiler.h b/compiler.h index ebbfa4e1..dd7a5b88 100755 --- a/compiler.h +++ b/compiler.h @@ -1,8 +1,8 @@ /*! * \file * * @@ -15,6 +15,16 @@ /* * $Log$ + * Revision 1.8 2004/07/20 23:43:39 bernie + * Use attribute((always_inline)) to force inlining. This fixes the much + * hated need of redundant prototypes for inline functions. + * + * Revision 1.7 2004/07/20 23:26:48 bernie + * Fix two errors introduced by previous commit. + * + * Revision 1.6 2004/07/20 23:12:43 bernie + * *** empty log message *** + * * Revision 1.5 2004/07/20 17:08:03 bernie * Cleanup documentation * @@ -46,27 +56,10 @@ #define GNUC_PREREQ(maj, min) 0 #endif -/* 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 - -/* Support for harvard architectures */ -#define PGM_READ_CHAR(s) (*(s)) -#define PGM_FUNC(x) x -#define PGM_ATTR /* nothing */ - #if defined(__IAR_SYSTEMS_ICC) || defined(__IAR_SYSTEMS_ICC__) #pragma language=extended - #undef INTERRUPT #define INTERRUPT(x) interrupt [x] - #undef REGISTER #define REGISTER shortad - #undef INLINE #define INLINE /* unsupported */ /* Imported from . Unfortunately, we can't just include @@ -108,14 +101,6 @@ #include /* for time_t */ #define float double - #ifdef __cplusplus - extern "C" { - #endif - void SchedulerIdle(void); - #ifdef __cplusplus - } - #endif - /* Ouch, ReleaseSemaphore() conflicts with a WIN32 call ;-( */ #define ReleaseSemaphore KReleaseSemaphore @@ -129,17 +114,12 @@ #elif defined(__GNUC__) /* GCC attributes */ - #undef FORMAT #define FORMAT(type,fmt,first) __attribute__((__format__(type, fmt, first))) - #undef NORETURN #define NORETURN __attribute__((__noreturn__)) - #undef UNUSED #define UNUSED(type,arg) __attribute__((__unused__)) type arg - #undef INLINE - #define INLINE extern inline + #define INLINE static inline __attribute__((__always_inline__)) #if GNUC_PREREQ(3,1) - #undef DEPRECATED - #define DEPRECATED __attribute__((__deprecated__)) + #define DEPRECATED __attribute__((__deprecated__)) #endif #if defined(__i386__) @@ -151,14 +131,6 @@ #include #undef system_sigset_t - #ifdef __cplusplus - extern "C" { - #endif - void SchedulerIdle(void); - #ifdef __cplusplus - } - #endif - #elif defined(__AVR__) #include @@ -174,9 +146,6 @@ /* Support for harvard architectures */ #ifdef _PROGMEM - #undef PGM_READ_CHAR - #undef PGM_FUNC - #undef PGM_ATTR #define PGM_READ_CHAR(s) pgm_read_byte(s) #define PGM_FUNC(x) x ## _P #define PGM_ATTR PROGMEM @@ -191,18 +160,65 @@ #include #include - #define PSTR /* nothing */ - #else #error unknown compiler #endif + +/* A few defaults for missing compiler features. */ +#ifndef INLINE +#define INLINE static inline +#endif +#ifndef NORETURN +#define NORETURN /* nothing */ +#endif +#ifndef FORMAT +#define FORMAT(type,fmt,first) /* nothing */ +#endif +#ifndef DEPRECATED +#define DEPRECATED /* nothing */ +#endif +#ifndef UNUSED +#define UNUSED(type,arg) type arg +#endif +#ifndef REGISTER +#define REGISTER /* nothing */ +#endif +#ifndef INTERRUPT +#define INTERRUPT(x) ERROR_NOT_IMPLEMENTED +#endif + +/* Support for harvard architectures */ +#ifndef PSTR +#define PSTR /* nothing */ +#endif +#ifndef PGM_READ_CHAR +#define PGM_READ_CHAR(s) (*(s)) +#endif +#ifndef PGM_FUNC +#define PGM_FUNC(x) x +#endif +#ifndef PGM_ATTR +#define PGM_ATTR /* nothing */ +#endif + + /* Misc definitions */ #ifndef NULL -#define NULL 0 +#define NULL 0 #endif #ifndef EOF -#define EOF (-1) +#define EOF (-1) +#endif + + +/* Support for hybrid C/C++ applications. */ +#ifdef __cplusplus + #define EXTERN_C_BEGIN extern "C" { + #define EXTERN_C_END } +#else + #define EXTERN_C_BEGIN /* nothing */ + #define EXTERN_C_END /* nothing */ #endif