--- a/libs/l4/include/types.h	2008-06-16 07:16:55.000000000 +0200
+++ b/libs/l4/include/types.h	2010-11-24 12:48:52.000000000 +0200
@@ -180,9 +180,19 @@
 #endif
 
 /** @todo FIXME Source from libc's limit.h once we can - awiggins. */
-#define CHAR_BIT 8
-#define WORD_T_BIT (sizeof (word_t) * CHAR_BIT)
-#define L4_BITS_PER_WORD WORD_T_BIT
+#ifndef CHAR_BIT
+/*
+ * Do not use a #define for 'CHAR_BIT' because such a definition
+ * would ultimately collide with libc headers (see the predictive
+ * comment above). If OKL4 headers are included into a dedicated
+ * C++ namespace, this conflict can be avoided. OKL4's CHAR_BIT
+ * will then end up being 'Okl4::CHAR_BIT' wheras libc's CHAR_BIT
+ * will populate the root name space.
+ */
+enum { CHAR_BIT = 8 };
+#endif
+enum { WORD_T_BIT = sizeof(word_t) * CHAR_BIT };
+enum { L4_BITS_PER_WORD = WORD_T_BIT };
 
 // XXX: magpie workaround
 // # define __PLUS32 + (sizeof (L4_Word_t) * 8 - 32)
