The
__CONCAT macro makes use of the
cpp(1) preprocessor to concatenate two tokens. When the macro is expanded,
x and
y are combined into a single token, provided that the result forms a valid token; two tokens that together do not form a valid token can not be concatenated. This is known as “token concatenation” or “token pasting”.
The
__STRING() macro uses the conventional ‘#' preprocessing operator to replace the argument
x with a string literal. This is also known as “stringification”.