X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=compiler.h;h=a81120f498ca3ec0721bff2a14cb6a4b9c2aa221;hb=79736373558decc45719f06e34cc6d67ef04f23d;hp=96f9c9aca723e0501f05007c5ec3ad4f52162000;hpb=277b540c0764dd376dcf583acdc97a2b2fd3d8e6;p=bertos.git diff --git a/compiler.h b/compiler.h index 96f9c9ac..a81120f4 100755 --- a/compiler.h +++ b/compiler.h @@ -15,6 +15,13 @@ /*#* *#* $Log$ + *#* Revision 1.21 2004/09/06 21:38:31 bernie + *#* Misc documentation and style fixes. + *#* + *#* Revision 1.20 2004/08/29 21:57:58 bernie + *#* Move back STATIC_ASSERT() to compiler.h as it's needed in cpu.h; + *#* iptr_t, const_iptr_t: Replace IPTR macro with a real typedef. + *#* *#* Revision 1.19 2004/08/25 14:12:08 rasky *#* Aggiornato il comment block dei log RCS *#* @@ -159,7 +166,7 @@ #if CPU_X86 - /* hack to avoid conflicts with system type */ + /* Hack to avoid conflicts with system type */ #define sigset_t system_sigset_t #include #include @@ -267,7 +274,7 @@ /* - * Standard type definitions + * Standard type definitions. * These should be in , but many compilers lack them. */ #if !(defined(size_t) || defined(_SIZE_T_DEFINED)) @@ -278,9 +285,10 @@ typedef long time_t; #endif /* _TIME_T_DEFINED || __time_t_defined */ -/*! Storage for pointers and integers */ -/* FIXME: turn this into a typedef? */ -#define IPTR void * +/*! Bulk storage large enough for both pointers or integers */ +typedef void * iptr_t; +typedef const void * const_iptr_t; +#define IPTR iptr_t /* OBSOLETE */ typedef long utime_t; /*!< Type for time expressed in microseconds */ typedef unsigned char sig_t; /*!< Type for signal bits */ @@ -301,7 +309,7 @@ typedef unsigned char page_t; /*!< Type for banked memory pages */ typedef unsigned short int uint16_t; typedef unsigned long int uint32_t; /* \} */ -#elif defined(__GNUC__) && defined(__AVR__) +#elif defined(__GNUC__) && CPU_AVR /* avr-libc is weird... */ #include #else @@ -331,7 +339,7 @@ typedef unsigned char page_t; /*!< Type for banked memory pages */ /* Quasi-ANSI macros */ #ifndef offsetof /*! - * Return the byte offset of the member \a m in struct \a s + * Return the byte offset of the member \a m in struct \a s. * * \note This macro should be defined in "stddef.h" and is sometimes * compiler-specific (g++ has a builtin for it). @@ -340,11 +348,15 @@ typedef unsigned char page_t; /*!< Type for banked memory pages */ #endif #ifndef countof /*! - * Count the number of elements in the static array \a a + * Count the number of elements in the static array \a a. * - * \note This macro is non-standard, but implmenents a very common idiom + * \note This macro is non-standard, but implements a very common idiom */ #define countof(a) (sizeof(a) / sizeof(*(a))) #endif +/*! Issue a compilation error if the \a condition is false */ +#define STATIC_ASSERT(condition) \ + extern char PP_CAT(CT_ASSERT___, __LINE__)[(condition) ? 1 : -1] + #endif /* DEVLIB_COMPILER_H */