Consider the following macro:
#define CAT(X, Y) X ## Y
#define CMB(A, B) CAT(A, B)
#define SLB_LOGGING_ALGORITHM CMB(Logging, SLB_ALGORITHM)
where SLB_ALGORITHM
is a defined pre-processor symbol.
If I just use CAT
directly instead of CMB
, SLB_ALGORITHM
does not get expanded. Why is that the case and how exactly does the indirection help?