icecrime is correct, but something important to point out in the definition is that the tokens need to be valid preprocessing tokens. Examples:
#define CONCAT(a,b) a ## b
CONCAT(ClassyClass, ); // bad, is not a valid preprocessing token
CONCAT(Symbol, __LINE__); // valid as both are valid tokens