#ifndef PP_CONCAT_H_
#define PP_CONCAT_H_

/* Concatenates two tokens into a single token, after exanding either or
** both tokens if they are preprocessor symbols.
**
** Example:
**
** #define S1 a
** #define S2 b
** #define S3 S1
**
** PP_CONCATE(S3, S2)
**
** This will expand to the token:
**
** ab
*/
#define PP_CONCAT(A, B) PP_CONCAT_(A, B)

/* This "helper" macro is necessary because the macro processor does
** parameter concatenation BEFORE any expansion.
*/
#define PP_CONCAT_(A, B) A ## B

#endif

    Source: geocities.com/wkaras/itemlist

               ( geocities.com/wkaras)