#define FLEX_ARRAY 1
 #endif
 
+/** Make string token from C expression */
+#define STR(x) _STR_(x)
+#define _STR_(x) #x
+
+/** Make single C token from 2 separate tokens */
+#define CONCAT(a, b)    _CONCAT_(a, b)
+#define _CONCAT_(a, b)  a ## b
+
+/** Make single C token from 3 separate tokens */
+#define CONCAT3(a, b, c)     _CONCAT3_(a, b, c)
+#define _CONCAT3_(a, b, c)  a ## b ## c
+
+/** Make single C token from 4 separate tokens */
+#define CONCAT4(a, b, c, d)    _CONCAT4_(a, b, c, d)
+#define _CONCAT4_(a, b, c, d)  a ## b ## c ## d
+
 /**
  * @name Compiler attributes.
  */
 int posix_memalign(void **ptr_p, size_t align, size_t len);
 #endif
 
-/** cpp expr -> string */
-#define STR(x) _STR_(x)
-#define _STR_(x) #x
-
 #endif