C token pasting operator

33 Views Asked by At

Is there any way to use a prior defined macro in the concatenation using the ## operator?

I would like:

#define PREFIX MR_
#define MAKE_TITLE(NAME) PREFIX ## NAME
MAKE_TITLE(SMITH)

MR_SMITH

Rather the result is:

PREFIXSMITH

I do not want to include the prefix as an argument in the MAKE_TITLE macro as this macro may be used many times for various categories (MR, MS, etc.). Consider:

#define COUPLES\
    X(SMITH, 31, 35), \
    X(JONES, 41, 39), \
    X(BAKER, 51, 21)

#define X(SURNAME, AGE_HUSBAND, AGE_WIFE) PREFIX ## SURNAME = AGE_HUSBAND,
#define PREFIX MR_
enum HUSBAND_AGES
{
    COUPLES
};

#define X(SURNAME, AGE_HUSBAND, AGE_WIFE) PREFIX ## SURNAME = AGE_WIFE,
#define PREFIX MS_
enum WIFE_AGES
{
    COUPLES
}
0

There are 0 best solutions below